【发布时间】:2021-07-03 14:13:32
【问题描述】:
ID<-c(1:5)
string<-c("aaa-NA","NA", "bbb-NA-aaa,","bbb-ccc","NA-aaa-ccc")
mydata<-data.frame(ID,string)
我想通过删除NA 来创建一个新变量,只有当它们与其他字符相关联时,例如:
ID string new_var
1 1 aaa-NA aaa
2 2 NA NA
3 3 bbb-NA-aaa, bbb-aaa
4 4 bbb-ccc bbb-ccc
5 5 NA-aaa-ccc aaa-ccc
【问题讨论】:
-
你是如何创建这个字符串的。是来自
paste吗?我认为应该避免创建“字符串”。 -
是的,我是在按个人 ID 分组后通过粘贴创建的
-
我会考虑使用
tidyr::unite(df1, string, col1, col2, col3, na.rm = TRUE, sep="-")这样可以避免这一步 -
或者,如果您从单列粘贴,请尝试删除 NA,即
df1 %>% group_by(ID) %>% summarise(string = if(all(is.na(string))) NA_character else str_c(string[complete.cases(string)], collapse= "-")) -
我了解,我认为这是一个不错的选择。我会尝试并回到你身边。谢谢。