R有一框利用dplyr将A列作为分组将每一组除第一行的B替换为NA个数据
假设数据框为df,A列为分组列,B列为要替换的列,可以使用以下dplyr代码实现:
library(dplyr)
df %>%
group_by(A) %>%
mutate(B = replace(B, 2:n(), NA))
解释:
-
group_by(A)表示按照A列进行分组。 -
mutate(B = replace(B, 2:n(), NA))表示对于每一组数据,将B列从第二行到最后一行全部替换为NA。其中2:n()表示从第二个元素到最后一个元素的序列。replace(B, 2:n(), NA)表示将B列中第二个元素到最后一个元素替换为NA。mutate(B = replace(B, 2:n(), NA))表示将替换后的B列更新到数据框中。
注意:
以上代码中,假设每组数据至少有两行。如果某些组只有一行数据,那么该行B值将不会被替换为NA。如果需要将所有B值替换为NA,可以使用以下代码:
df %>%
group_by(A) %>%
mutate(B = ifelse(row_number() > 1, NA, B))
其中ifelse(row_number() > 1, NA, B)表示如果是第一行,则保留原值B,否则将B替换为NA。
原文地址: https://www.cveoy.top/t/topic/OCY 著作权归作者所有。请勿转载和采集!