我正尝试按列将 Dataframe 分组为3个组。因此,组1是列1-3,组2是列4-6,依此类推。然后,我希望基于组迭代各行。我希望检查每行每个组中的第一个值是否为“NA”。如果是“NA”,则该组中的所有值都应转换为“NA”。如果不是NA,值应该保持原样。
示例df:
df <- data.frame(col_1 = c(1,2,3,NA,3,2,1),
col_2 = c(1,3,2,4,3,2,1),
col_3 = c(1,2,3,4,3,2,1),
col_4 = c(NA,2,3,4,3,2,1),
col_5 = c(2,2,3,4,3,2,1),
col_6 = c(3,2,3,4,3,2,1))
我想要的输出:
df_1 <- data.frame(col_1 = c(1,2,3,NA,3,2,1),
col_2 = c(1,3,2,NA,3,2,1),
col_3 = c(1,2,3,NA,3,2,1),
col_4 = c(NA,2,3,4,3,2,1),
col_5 = c(NA,2,3,4,3,2,1),
col_6 = c(NA,2,3,4,3,2,1))
我尝试使用'group_by()'和'mutate()',但毫无效果。这是正确的方法吗?
2条答案
按热度按时间yvgpqqbh1#
这可能会有帮助。组是由
rep(1:(ncol(df)/3), each=3)
定义的,如果存在更多的组/行,则必须进行调整。nfzehxib2#
这里是另一个选项:
输出: