逐个案例,变量已存在' group1'或者' group1',' group2'或者' group1',group2' '组3' (这些是可变的)。
但是,我想每次都制作三个组变量。
例如,如果我只有一个组变量' group1',但我想得到' group1',' group2'和'组3' (' group2'和' group3'将为空列。)
我认为它可以检查变量名称并使其不存在变量。
请告诉我如何解决这个问题。
答案 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)