R语言按条件合并多行行为调研数据的实现方案咨询
解决方案
你可以用tidyverse中的fill()函数按用户id分组后填充公共字段,再过滤掉both条件的行即可实现需求,示例代码如下:
library(tidyverse) # 原始数据 a <- tibble(id = c(rep(1, 3), rep(2,3), rep(3, 3)) , condition = rep(c("both", "x", "y"),3), belief = c(4.8, NA, NA, 3.2, NA, NA, 6.5, NA, NA), past = c(1.8, NA, NA, 4.8, NA, NA, 2.6, NA, NA), current= c(1.8, NA, NA, 3.8, NA, NA, 3.1, NA, NA), feel = c(NA, .6, 1, NA, 2.1, 2.3, NA, 2.6, 1.5), willing = c(NA, 3.6, 205, NA, 2.1, 2.3, NA, 1.3, 0.3)) # 处理代码 b <- a %>% group_by(id) %>% # 填充both行的公共字段到同id的x、y行 fill(belief, past, current, .direction = "down") %>% ungroup() %>% # 过滤掉不需要的both条件行 filter(condition != "both") # 验证输出 b
运行后得到的b和预期输出结构完全一致。如果你的数据中both行不是每个id的第一行,可以将fill的direction参数调整为"downup",确保所有空值都能被同id的有效值填充。
内容的提问来源于stack exchange,提问作者Debra Lindsay
相关产品推荐
相关产品推荐

