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 というこのデータ フレームにさらに 2 つの列を追加したいと思います。たとえば、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ですか?何か案は?

4

2 に答える 2

3

data.table 構文を使用する前に、pa data.table を作成する必要があります。

p<-data.table(p)
#create(update) column called LOCATION and set it to Dallas if AGENT==45693
p[AGENT==45693,LOCATION:="Dallas"]

括弧内の最初の引数はフィルターで、2 番目の引数は J と呼ばれ、列を選択するか、この場合は列を割り当てることができます。

于 2013-05-30T14:48:59.180 に答える
1

@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")]
于 2013-05-30T15:05:53.073 に答える