1

我有一个名为 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,将 provider 设置为 ATT。

我曾尝试过这样的事情:

library(data.table)
p<-p[,LOCATION:=if(AGENT==45693, c("Dallas"))]

我收到此错误:

Error: unexpected ',' in "p<-p[,LOCATION:=if(AGENT==45693,"

data.table 是完成此任务的最佳方法吗?有任何想法吗?

4

2 回答 2

3

您必须先制作 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 ,您可以在其中选择列或在这种情况下分配一列。

于 2013-05-30T14:48:59.180 回答
1

@Dean 的分析器非常好。我只是提到您还可以使用:=赋值运算符来创建名称向量的事实。这里有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")]
于 2013-05-30T15:05:53.073 回答