检查并创建r中不存在的变量
根据具体情况,变量存在于“group1”或“group1”、“group2”或“group1”、group2或“group3”(这些是变量) 但是,我每次都要生成三个组变量 例如,如果我只有一个组变量“group1”,但我希望得到“group1”、“group2”和“group3”(“group2”和“group3”将是空列) 我认为检查变量名和设置不存在的变量是可行的检查并创建r中不存在的变量,r,R,根据具体情况,变量存在于“group1”或“group1”、“group2”或“group1”、group2或“group3”(这些是变量) 但是,我每次都要生成三个组变量 例如,如果我只有一个组变量“group1”,但我希望得到“group1”、“group2”和“group3”(“group2”和“group3”将是空列) 我认为检查变量名和设置不存在的变量是可行的 请告诉我如何处理此问题。NA在这种情况下填写此值似乎是合理的: df <- data.frame(id=1:10,gr
请告诉我如何处理此问题。
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如果您只想在已经填充的列之外再填充一列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)
data.frame(id=integer(),group1=numeric(),group2=numeric(),group3=numeric(),stringsAsFactors=FALSE)
id组1组2组3
(或长度为0的行名称)
如果你能用一个例子来解释,那就太好了。@RonakShah我添加了一个例子图像。你想让新列填充什么?它们需要有一个值,无论是”
还是NA
@richardscri,即使新列是空的。列中没有“空”这样的东西。如果里面什么都没有,我们一开始就不需要它了。每行都需要某种值。谢谢你的帮助,但这不是我的问题。并不总是有“group1”。有时是“group1”和“group2”,所以我必须创建“group3”。我将在for循环中处理这个问题,因此我无法使用您的代码创建notexist变量。@hamel-您是否尝试过该代码?如果由于setdiff()
setdiff函数可用于非列名的元素,所以您预先存在group1/2/3的任何可能组合,则该函数可以工作。@hamel-恐怕我不知道您想要什么。这个答案符合你在问题中想要的结果,在你澄清你想要什么之前,我们都是在暗中刺伤。谢谢你的帮助,但这不是我的问题。并不总是有“group1”。有时是“group1”和“group2”,所以我必须创建“group3”。我将在for循环中进行此操作,因此我无法使用您的代码创建not exist变量。您想要什么还不清楚。
data.frame(id=integer(),group1=numeric(),group2=numeric(),group3=numeric(),stringsAsFactors=FALSE)
id group1 group2 group3
<0 rows> (or 0-length row.names)