在r中检查并创建不存在的变量

时间:2015-12-15 05:17:06

标签: r

逐个案例,变量已存在' group1'或者' group1',' group2'或者' group1',group2' '组3' (这些是可变的)。

但是,我想每次都制作三个组变量。

例如,如果我只有一个组变量' group1',但我想得到' group1',' group2'和'组3' (' group2'和' group3'将为空列。)

enter image description here

我认为它可以检查变量名称并使其不存在变量。

请告诉我如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

NA似乎是一个合理的价值来填补这种情况:

df <- data.frame(id=1:10,group1=1)

vars <- c("group1","group2","group3")
df[setdiff(vars,names(df))] <- NA

#   id group1 group2 group3
#1   1      1     NA     NA
#2   2      1     NA     NA
#3   3      1     NA     NA
#4   4      1     NA     NA
#5   5      1     NA     NA
#6   6      1     NA     NA
#7   7      1     NA     NA
#8   8      1     NA     NA
#9   9      1     NA     NA
#10 10      1     NA     NA

也适用于其他组合...

df <- data.frame(id=1:10,group1=1,group2=2)
df[setdiff(vars,names(df))] <- NA

#   id group1 group2 group3
#1   1      1      2     NA
#2   2      1      2     NA
#...

答案 1 :(得分:1)

如果你只想要填充NA的列除了已经填充的列,那么这可行:

    cbind(id=1:10,group1=rep(1,10),data.frame(group2=NA,group3=NA))
   id group1 group2 group3
1   1      1     NA     NA
2   2      1     NA     NA
3   3      1     NA     NA
4   4      1     NA     NA
5   5      1     NA     NA
6   6      1     NA     NA
7   7      1     NA     NA
8   8      1     NA     NA
9   9      1     NA     NA
10 10      1     NA     NA

如果您想要一个包含相应列的空数据框,那么您想要使用它:

    data.frame(id=integer(),group1=numeric(),group2=numeric(),group3=numeric(),stringsAsFactors=FALSE)
 id     group1 group2 group3
<0 rows> (or 0-length row.names)