R data.frame से पंक्ति कैसे प्राप्त करें


103

मेरे पास कॉलम हेडर के साथ एक डेटा.फ्रेम है।

मैं एक सूची के रूप में data.frame से एक विशिष्ट पंक्ति कैसे प्राप्त कर सकता हूं (सूची के लिए कुंजी के रूप में कॉलम हेडर के साथ)?

विशेष रूप से, मेरा डेटा.फ्रेम है

      एबीसी
    1 5 4.25 4.5
    2 3.5 4 2.5
    3 3.25 4 4
    4 4.25 4.5 2.25
    ५ १.५ ४.५ ३

और मैं एक ऐसी पंक्ति प्राप्त करना चाहता हूं जो इसके बराबर हो

> c(a=5, b=4.25, c=4.5)
  a   b   c 
5.0 4.25 4.5 

जवाबों:


128
x[r,]

जहाँ r वह पंक्ति है जिसमें आप रुचि रखते हैं। उदाहरण के लिए इसे आज़माएँ:

#Add your data
x <- structure(list(A = c(5,    3.5, 3.25, 4.25,  1.5 ), 
                    B = c(4.25, 4,   4,    4.5,   4.5 ),
                    C = c(4.5,  2.5, 4,    2.25,  3   )
               ),
               .Names    = c("A", "B", "C"),
               class     = "data.frame",
               row.names = c(NA, -5L)
     )

#The vector your result should match
y<-c(A=5, B=4.25, C=4.5)

#Test that the items in the row match the vector you wanted
x[1,]==y

इस पृष्ठ ( इस उपयोगी साइट से ) को इस तरह अनुक्रमित करने की अच्छी जानकारी है।


14

तार्किक अनुक्रमण बहुत R-ish है। प्रयत्न:

 x[ x$A ==5 & x$B==4.25 & x$C==4.5 , ] 

या:

subset( x, A ==5 & B==4.25 & C==4.5 )

7

प्रयत्न:

> d <- data.frame(a=1:3, b=4:6, c=7:9)

> d
  a b c
1 1 4 7
2 2 5 8
3 3 6 9

> d[1, ]
  a b c
1 1 4 7

> d[1, ]['a']
  a
1 1

5

यदि आप पंक्ति संख्या नहीं जानते हैं, लेकिन कुछ मूल्यों को जानते हैं तो आप सबसेट का उपयोग कर सकते हैं

x <- structure(list(A = c(5,    3.5, 3.25, 4.25,  1.5 ), 
                    B = c(4.25, 4,   4,    4.5,   4.5 ),
                    C = c(4.5,  2.5, 4,    2.25,  3   )
               ),
               .Names    = c("A", "B", "C"),
               class     = "data.frame",
               row.names = c(NA, -5L)
     )

subset(x, A ==5 & B==4.25 & C==4.5)

क्या आपको इसके बजाय इसका मतलब है? सबसेट (x, A == 5 && B == 4.25 && C == 4.5)
Momeara

नहीं, यह होना चाहिए था:subset(x, A ==5 & B==4.25 & C==4.5)
IRTFM

1

10 साल बाद ---> tidyverse का उपयोग करके हम इसे आसानी से हासिल कर सकते हैं और क्रिस्टोफर बॉटम्स से एक पत्ता उधार ले सकते हैं । बेहतर समझ के लिए, देखें slice()

library(tidyverse)
x <- structure(list(A = c(5,    3.5, 3.25, 4.25,  1.5 ), 
                    B = c(4.25, 4,   4,    4.5,   4.5 ),
                    C = c(4.5,  2.5, 4,    2.25,  3   )
),
.Names    = c("A", "B", "C"),
class     = "data.frame",
row.names = c(NA, -5L)
)

x
#>      A    B    C
#> 1 5.00 4.25 4.50
#> 2 3.50 4.00 2.50
#> 3 3.25 4.00 4.00
#> 4 4.25 4.50 2.25
#> 5 1.50 4.50 3.00

y<-c(A=5, B=4.25, C=4.5)
y
#>    A    B    C 
#> 5.00 4.25 4.50

#The slice() verb allows one to subset data row-wise. 
x <- x %>% slice(1) #(n) for the nth row, or (i:n) for range i to n, (i:n()) for i to last row...

x
#>   A    B   C
#> 1 5 4.25 4.5

#Test that the items in the row match the vector you wanted
x[1,]==y
#>      A    B    C
#> 1 TRUE TRUE TRUE

2020-08-06 को रेप्रेक्स पैकेज (v0.3.0) द्वारा बनाया गया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.