0

我有一个带有 ID 列的数据集,每个 ID 都有多次访问。我正在尝试创建一个新变量状态,它将检查访问列和值列。条件如下

对于 1,2 和 3 中的访问,如果值为 1,1,1,则 1 对于 1,2 和 3 中的访问,如果值为 0,1,1,则 0 对于 1,2 和 3 中的访问,如果值是 0,0,0 然后 0

如何在 R 中指定此条件?

下面是一个示例数据集

ID 访问 价值
1 1 1
1 2 1
1 3 1
2 1 1
2 2 0
2 3 0
3 1 0
3 2 0
3 3 0
4 1 0
4 2 1
4 3 1

结果数据集

ID 访问 价值 地位
1 1 1 1
1 2 1 1
1 3 1 1
2 1 1 0
2 2 0 0
2 3 0 0
3 1 0 0
3 2 0 0
3 3 0 0
4 1 0 0
4 2 1 0
4 3 1 0
4

2 回答 2

1

我会尝试过这样的事情(假设你的初始表被称为df):

status = c()
for(i in 1:4){ #1:4 correspond to the ID you showed us
   if(sum(df[df$ID == i,'value'])==3) status=c(status,rep(1,3))
    
   if(sum(df[df$ID == i,'value'])!=3) status=c(status,rep(0,3))
}

df = cbind(df,status)

我希望它会帮助你

于 2021-06-02T14:16:41.023 回答
0

我相信case_whendplyr包中是你需要使用的。这里有关该功能的更多详细信息:https ://dplyr.tidyverse.org/reference/case_when.html

于 2021-06-02T14:12:47.040 回答