R语言根据名为df的宽数据数据框中名ID的列分组,相同ID的为一组,并求得该组其余各列的均值,如有空值则不参与均值计算,并将得到的组内各行均值以代替组内全部的数据输出,
时间: 2024-04-10 17:28:34 浏览: 30
R语言 数据分析
如果您想在计算均值时忽略含有空值的数据,您可以使用`na.rm = TRUE`参数。下面是一个修改后的示例代码,可以根据df数据框中的ID列进行分组,并计算每个组内其他列的均值(忽略空值),然后将得到的组内各行均值代替组内全部的数据输出。
```R
library(dplyr)
df <- data.frame(ID = c(1, 1, 2, 2, 3, 3),
col1 = c(10, NA, 30, 40, NA, 60),
col2 = c(2, 4, NA, 8, 10, NA))
df_new <- df %>%
group_by(ID) %>%
mutate(across(-ID, ~ mean(., na.rm = TRUE))) %>%
distinct(ID, .keep_all = TRUE)
df_new
```
在这个代码中,我们使用`mutate(across(-ID, ~ mean(., na.rm = TRUE)))`来计算每个组内其他列的均值。`mean`函数的`na.rm`参数设为`TRUE`,这样可以忽略含有空值的数据。最后,使用`distinct(ID, .keep_all = TRUE)`保留每个组的唯一行。
这样,您就可以得到一个新的数据框df_new,其中每个组的其他列都被组内各行的均值所代替,并且空值不参与均值计算。
阅读全文