मैं अपने डेटा फ्रेम में एक नया कॉलम जोड़ना चाहता हूं ताकि प्रत्येक पंक्ति के लिए यदि 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