簡體   English   中英

根據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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM