dplyr
我查看了许多“根据条件执行 X ”的 SO 问题,我相信只有这个问题接近我正在做的事情。我尝试过但无法适应 @divibisan 的答案。
我的数据如下:
df <- tibble(
Group_ID = c(1,2,3,4,5,6),
statusA = c("NEW", "NEW", "OLD","NEW", "OLD","OLD"),
statusB = c("BONUS", NA, "BONUS", NA, NA,"ROLLBACK"),
someVar = c("Thanks", "for", "your", "help","!","!"))
当statusB
是任何非 NA 值时,我想“拆分”(就像拆分)该行,使得和Group_ID
存在不同的行。当行被“拆分”时, 的非 NA 值的行应显示 的 NA , 的非 NA 值的行应显示 的 NA 。所有剩余变量(即和以外的变量)应按每行显示。statusA
statusB
statusA
statusB
statusB
statusA
statusA
statusB
Group_ID
desired_df <- tibble(
Group_ID = c(1,1,2,3,3,4,5,6,6),
statusA = c("NEW",NA,"NEW","OLD",NA,"NEW","OLD","OLD",NA),
statusB = c(NA,"BONUS",NA,NA,"BONUS",NA,NA,NA,"ROLLBACK"),
someVar = c("Thanks","Thanks", "for", "your","your","help","!","!","!"))
我强烈希望避免使用循环。可以使用 dplyr 来实现吗?
你可以试试:
将各行绑定在一起,同时将其他各值清空为
NA
: