次のデータフレームでは、対応するA、B、またはCの列に一致するD2という新しい列を作成します。たとえば、D == Aなら、D2 == A2が必要です。R - 同じデータフレームの他の列による列の一致
A A2 B B2 C C2 D
1 10 2 90 3 9 1
1 11 2 99 3 15 1
1 42 2 2 3 9 2
1 5 2 54 3 235 2
1 13 2 20 3 10 3
1 6 2 1 3 4 3
これは私が新しいデータフレームが見えるようにしたいものです:私は多くの列でこれをやっているので、
A A2 B B2 C C2 D D2
1 10 2 90 3 9 1 10
1 11 2 99 3 15 1 11
1 42 2 2 3 9 2 2
1 5 2 54 3 235 2 54
1 13 2 20 3 10 3 10
1 6 2 1 3 4 3 4
私は、それをdplyrを使用してifelse文でこれを行うことに成功しましたが、していますしばらくすると退屈になる。私は同じ仕事を達成するより巧妙な方法があるのだろうかと思っていました。
library(dplyr)
newdata <- olddata %>% mutate(D2=ifelse(D==A,A2,ifelse(D==B,B2,C2)))
とC2が 'DF [C( "A2"、 "B2"、 "C2")] [CBIND(1:nrow(DF) df $ D)] '十分な柔軟性? – thelatemail
@thelatemail:それは素敵なシングルライナーです。 – Sathish
@thelatemailかわいいですが、私はOPが単純な例を作ったと思います – akrun