如何基于R中的行值组合创建新变量(列)?

如何基于R中的行值组合创建新变量(列)?,r,dataframe,dplyr,tidyverse,R,Dataframe,Dplyr,Tidyverse,我想基于行值的组合创建一个新变量/列。我有超过7万个ID,每个ID有四行,2013-2016年每年一行。每年,它们的值为0或1。对于2013年,每个人只能有0,对于2014-2016年,他们只能有全部0或全部1,因此有两种可能的组合:0000或0111;但是在不同的行中 我想创建一个新的变量,指示ID属于哪个组。因此,如果ID在四年内的组合为0000,我希望在新列中的所有年份都为0。如果一个ID的组合是0111,我希望在新列中所有年份都是1。这样,我就可以创建一个对照组和一个治疗组来进行分析。我

我想基于行值的组合创建一个新变量/列。我有超过7万个ID,每个ID有四行,2013-2016年每年一行。每年,它们的值为0或1。对于2013年,每个人只能有0,对于2014-2016年,他们只能有全部0或全部1,因此有两种可能的组合:0000或0111;但是在不同的行中

我想创建一个新的变量,指示ID属于哪个组。因此,如果ID在四年内的组合为0000,我希望在新列中的所有年份都为0。如果一个ID的组合是0111,我希望在新列中所有年份都是1。这样,我就可以创建一个对照组和一个治疗组来进行分析。我的数据框包含其他变量,例如性别

structure(list(Year = c(2013, 2014, 2015, 2016, 2013, 2014, 2015, 
2016), Value = c(0, 0, 0, 0, 0, 1, 1, 1), ID = c(1, 1, 1, 1, 
2, 2, 2, 2), Gender = c(0, 0, 0, 0, 0, 0, 0, 0)), row.names = c(NA, 
-8L), class = c("tbl_df", "tbl", "data.frame"))

tibble [8 x 4] (S3: tbl_df/tbl/data.frame)
 $ Year  : num [1:8] 2013 2014 2015 2016 2013 ...
 $ Value : num [1:8] 0 0 0 0 0 1 1 1
 $ ID    : num [1:8] 1 1 1 1 2 2 2 2
 $ Gender: num [1:8] 0 0 0 0 0 0 0 0
我已经尝试过这些代码,但我无法让它们在我的数据帧上工作。 - -

希望有人有一些建议

谢谢你的帮助

我们可以使用as.logical检查任何转换为logical的1s二进制文件,并使用+或as.integer强制将其恢复为二进制文件

我们可以使用as.logical检查任何转换为logical的1s二进制文件,并将其强制还原为带有+或as.integer的二进制文件


你需要df1%>%groupbyid%>%mutatenew=+anyas.LogicalValue哇,太快了!非常感谢你,这很有效,哈哈。我不会忘记的!他已经帮我解答了很多问题。非常感谢所有在线帮助者!你需要df1%>%groupbyid%>%mutatenew=+anyas.LogicalValue哇,太快了!非常感谢你,这很有效,哈哈。我不会忘记的!他已经帮我解答了很多问题。非常感谢所有在线帮助者!
library(dplyr)
df1 %>%
    group_by(ID) %>% 
    mutate(new = +any(as.logical(Value)))