-3

同じデータ フレーム内の 2 つの列を 1 つの列に結合するにはどうすればよいですか。簡単な例は次のとおりです。

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

data.frame または data.table の列に一致する同様のポスト結合を見つけましたが、自分のケースではそれを理解できません。助けてください、ありがとう

4

2 に答える 2

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"])
于 2013-01-18T22:09:00.950 に答える
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
于 2013-01-18T22:12:49.663 に答える