R 组合缺少值的字符串
这是我的样本数据R 组合缺少值的字符串,r,data-manipulation,R,Data Manipulation,这是我的样本数据 index <- c(1,2,3,4,5,6,7,8,9,10) a <- c('a','b','c',NA,'D','e',NA,'g','h','i') data <- data.frame(index,a) 我尝试使用grepl函数,但它似乎无法处理基本R中缺少值的数据: data$res <- as.character(data$a) data$res[! data$a %in% c("a","b") & !is.na(data$a)]
index <- c(1,2,3,4,5,6,7,8,9,10)
a <- c('a','b','c',NA,'D','e',NA,'g','h','i')
data <- data.frame(index,a)
我尝试使用grepl函数,但它似乎无法处理基本R中缺少值的数据:
data$res <- as.character(data$a)
data$res[! data$a %in% c("a","b") & !is.na(data$a)] <- "Other"
data
# index a res
# 1 1 a a
# 2 2 b b
# 3 3 c Other
# 4 4 <NA> <NA>
# 5 5 D Other
# 6 6 e Other
# 7 7 <NA> <NA>
# 8 8 g Other
# 9 9 h Other
# 10 10 i Other
基本R中的数据$res:
data$res <- as.character(data$a)
data$res[! data$a %in% c("a","b") & !is.na(data$a)] <- "Other"
data
# index a res
# 1 1 a a
# 2 2 b b
# 3 3 c Other
# 4 4 <NA> <NA>
# 5 5 D Other
# 6 6 e Other
# 7 7 <NA> <NA>
# 8 8 g Other
# 9 9 h Other
# 10 10 i Other
data$res使用dplyr
及其recode
功能,您可以
data %>% mutate(name=recode(a, a="a", b="b", .default="other"))
# index a name
# 1 1 a a
# 2 2 b b
# 3 3 c other
# 4 4 <NA> <NA>
# 5 5 D other
# 6 6 e other
# 7 7 <NA> <NA>
# 8 8 g other
# 9 9 h other
# 10 10 i other
使用dplyr
及其recode
功能,您可以
data %>% mutate(name=recode(a, a="a", b="b", .default="other"))
# index a name
# 1 1 a a
# 2 2 b b
# 3 3 c other
# 4 4 <NA> <NA>
# 5 5 D other
# 6 6 e other
# 7 7 <NA> <NA>
# 8 8 g other
# 9 9 h other
# 10 10 i other
ifelse(!greplt('(a | b'),data$a)和!is.na(data$a),'others',data$name)
I收到错误:替换长度为零ifelse(!greplt('(a | b'),data$a)和!is.na(data$a),'others',as.character(data$a))
ifelse(!greplt('(a | b'),data$a)和!is.na(data$a),'others',data$name)
我收到错误:替换的长度为零ifelse(!grepl('(a | b'),数据$a)和!is.na(数据$a),'others',as.character(数据$a))
谢谢。我需要将c、d、e、f、h、I标记为“其他”,而NA保留为NAThanks。我需要将c、d、e、f、h、I标记为“其他”,而NA保留为NA