R匹配同一data.frame中的两列
如何将同一数据帧中的两列合并为一列,一个简单的示例是:R匹配同一data.frame中的两列,r,R,如何将同一数据帧中的两列合并为一列,一个简单的示例是: a <- data.frame(id = 1:3, v1 = c('a', NA, NA), v2 = c(NA, 'b', 'c')) a id v1 v2 1 a <NA> 2 <NA> b 3 <NA> c 不清楚你到底想要什么。如果v1和v2的值不同,会发生什么情况 此方法将首选v1 a <- data.frame(id = 1:4, v1 =
a <- data.frame(id = 1:3, v1 = c('a', NA, NA), v2 = c(NA, 'b', 'c'))
a
id v1 v2
1 a <NA>
2 <NA> b
3 <NA> c
不清楚你到底想要什么。如果
v1
和v2
的值不同,会发生什么情况
此方法将首选v1
a <- data.frame(id = 1:4, v1 = c('a', NA, NA,'d'), v2 = c(NA, 'b', 'c','e'))
a <- as.data.table(a)
a[,v3 := v1]
a[is.na(v1), v3 := v2]
嗯,ifelse()
也许吧
> a <- data.frame(id = 1:3, v1 = c('a', NA, NA), v2 = c(NA, 'b', 'c'),
stringsAsFactors=FALSE)
> a$v3 <- ifelse(is.na(a$v1), a$v2, a$v1)
> a
id v1 v2 v3
1 1 a <NA> a
2 2 <NA> b b
3 3 <NA> c c
>a$v3 a
id v1 v2 v3
1 a
2乙
3C
a$v3 <- as.character(a$v1)
a[is.na(a$v1),"v3"] <- as.character(a[is.na(a$v1),"v2"])
> a <- data.frame(id = 1:3, v1 = c('a', NA, NA), v2 = c(NA, 'b', 'c'),
stringsAsFactors=FALSE)
> a$v3 <- ifelse(is.na(a$v1), a$v2, a$v1)
> a
id v1 v2 v3
1 1 a <NA> a
2 2 <NA> b b
3 3 <NA> c c