如何将同一数据框中的两列组合成一列,一个简单的例子是:
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
我需要的输出看起来像这样:
a
id v1 v2 v3
1 a <NA> a
2 <NA> b b
3 <NA> c c
我发现了一篇类似的帖子join matching columns in a data.frame or data.table,但我无法用自己的案例弄清楚,请帮忙,谢谢
答案 0 :(得分:2)
目前尚不清楚你想要什么。如果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]
使用传统的data.frame
方法:
a$v3 <- as.character(a$v1)
a[is.na(a$v1),"v3"] <- as.character(a[is.na(a$v1),"v2"])
答案 1 :(得分:1)
嗯,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