मैं अपने डेटा फ्रेम में एक नया कॉलम जोड़ना चाहता हूं ताकि प्रत्येक पंक्ति के लिए यदि LOC == 1
तो V
V1
के लिए दिए गए मूल्य के बराबर हो; अगर LOC==2
तो V
V2
के लिए दिए गए मान के बराबर है। यहाँ एक उदाहरण है:
df <-
LOC V1 V2
1 0.5 0.7
1 0.5 0.7
2 0.5 0.7
1 0.6 0.8
परिणाम होना चाहिए:
df <-
LOC V1 V2 V
1 0.5 0.7 0.5
1 0.5 0.7 0.5
2 0.5 0.7 0.7
1 0.6 0.8 0.6
मुझे यह करने में मदद चाहिए कि आर में कैसे करें।
3
daragh
23 नवम्बर 2015, 03:51
2 जवाब
सबसे बढ़िया उत्तर
यदि LOC
में केवल 1 या 2 है तो यह काम करेगा
df$V <- ifelse(df$LOC == 1, df$V1, df$V2)
2
Jacob H
23 नवम्बर 2015, 01:07
मैट्रिक्स अनुक्रमण का उपयोग करें:
idx <- cbind(seq_len(nrow(dat)), dat$LOC)
# row col
# [,1] [,2]
#[1,] 1 1
#[2,] 2 1
#[3,] 3 2
#[4,] 4 1
dat[-1][idx]
#[1] 0.5 0.5 0.7 0.6
3
thelatemail
23 नवम्बर 2015, 00:58