一个非常基本的问题,但是我想知道在数据组标识符定义唯一值和/或缺失的数据集中,您如何使用dplyr
来感觉到具有唯一值的缺失?如果它是数字列,我会做类似的事情:
data %>%
group_by(groupIDs) %>%
mutate(VARwithNA=max(VARwithNA, na.rm=TRUE)
但是如果它是字符列怎么办?有一个更好的方法吗?谢谢!
答案 0 :(得分:1)
使用unique
将提取(唯一)唯一值并保留其类型。以下解决方案的优点是,它适用于大多数数据类型(数字,字符,逻辑,日期,时间等)。
data %>%
group_by(groupIDs) %>%
mutate(VARwithNA=unique(na.omit(VARwithNA)))
请注意,如果没有可用(即非NA)值,则此操作将失败,并显示“替换长度为0”。
答案 1 :(得分:1)
unique
值的长度可能与每个组的行数不匹配。使用可复制的示例
data(mtcars)
mtcars$carb[c(5, 6, 10, 31)] <- NA
mtcars %>%
group_by(am) %>%
mutate(carb = unique(carb[!is.na(carb)]))
错误:列
carb
的长度必须为19(组大小)或1,而不是4
在这种情况下,最好将它们粘贴为单个字符串
library(dplyr)
data %>%
group_by(groupIDs) %>%
mutate(VARwithNA = toString(unique(VARwithNA[!is.na(VARwithNA)])))
或保留为list
列
data %>%
group_by(groupIDs) %>%
mutate(VARwithNA = list(unique(VARwithNA[!is.na(VARwithNA)])))