0

次のようなデータフレームがあります。

> df<-data.frame(A=c(NA,1,2,3,4),B=c(NA,5,2,6,4),C=c(NA,NA,2,NA,NA))
> df
   A  B  C
1 NA NA NA
2  1  5 NA
3  2  2  2
4  3  6 NA
5  4  4 NA

次の 2 つの条件に基づいて、この df の行の値を使用して 4 番目の「D」列を作成します。1) 行のすべての値が同じ (NA を除く) 場合、その「同じ」値を割り当てます。 D列へ。2) 値が異なる場合は、列 A の値を列 D に割り当てます。これにより、次のようなベクターとデータフレームが作成されます。

> df$D<-c(NA,1,2,3,4)
> df
   A  B  C  D
1 NA NA NA NA
2  1  5 NA  1
3  2  2  2  2
4  3  6 NA  3
5  4  4 NA  4
4

2 に答える 2

1

@Jamesの回答に基づいて、私はそれを信じています

apply(df,1,function(x) if(anyDuplicated(x)) x[which.min(is.na(x))] else x[1])

列数が多い場合は、少し速くなる可能性があります。

于 2013-07-19T19:29:30.713 に答える