![](/img/trans.png)
[英]How to create a new column with multiple values based on another column in R
[英]create another column based on the values on a column in R
我有一個名為p的數據框,其內容如下:
structure(list(AGENT = c(45693, 45693, 45693, 45693, 45693, 45693,
45693, 45693, 42627, 42627, 42627, 42627, 42627, 42627)), .Names = "AGENT", row.names = c(NA,
-14L), class = "data.frame")
我想在這個名為p的數據框中再添加兩列。 例如,如果p $ AGENT == 45693,我喜歡將Location設置為dallas,將提供者設置為ATT。
我試過這樣的事情:
library(data.table)
p<-p[,LOCATION:=if(AGENT==45693, c("Dallas"))]
我收到此錯誤:
Error: unexpected ',' in "p<-p[,LOCATION:=if(AGENT==45693,"
data.table是實現這個目標的最佳方法嗎? 有任何想法嗎?
您必須先創建pa data.table,然后才能使用data.table語法。
p<-data.table(p)
#create(update) column called LOCATION and set it to Dallas if AGENT==45693
p[AGENT==45693,LOCATION:="Dallas"]
括號中的第一個參數是過濾器,第二個參數稱為J,您可以在其中選擇列,或者在這種情況下指定列。
@Dean的anser非常好。 我只想提一下你也可以使用:=
賦值運算符來創建一個名字向量。 這里有2個版本:
library(data.table)
p <- data.table(dat)
p[AGENT==45693,c('LOCATION','Provider') := list("Dallas",'ATT')]
DT <- data.table(dat)
DT[AGENT==45693, `:=`(LOCATION ="Dallas", Provider = "ATT")]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.