2016-08-10 69 views
-3

假設我們有一個4列該數據幀:如何訪問其它列單元格給定的值

Subject Trial Before After 
     1  1  10 16 
     1  2  11 17 
     1  3  12 18 
     2  1  13 19 
     2  2  14 20 
     2  3  15 21 

假設至多有一行與給定的主題數量和審判數量。給定主題編號和試用編號,如何訪問具有給定主題和試用編號的行中的Before列中的值?

謝謝。

+1

'subset(mydf,Subject == 1&Trial == 3,select = Before)'?例如對於子1和試驗3 –

+0

請參閱'幫助(邏輯)'和'幫助(提取)' –

回答

3

有342點的方式,但一個是subset

df <- head(mtcars) 
df 
#     mpg cyl disp hp drat wt qsec vs am gear carb 
#Mazda RX4   21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 
#Mazda RX4 Wag  21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 
#Datsun 710  22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 
#Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 
#Valiant   18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 

subset(df, cyl == 4 & disp == 108, select=mpg) 
#   mpg 
#Datsun 710 22.8 

再過

with(df, mpg[cyl == 4 & disp == 108]) 
#[1] 22.8 

library(dplyr) 
df %>% filter(cyl == 4 & disp == 108) %>% select(mpg) 
# mpg 
#1 22.8 

library(data.table) 
setDT(df)[cyl == 4 & disp == 108, mpg] 
#[1] 22.8 
+0

正確的342種方式? –

+5

我算了一次。漫漫長夜 –

0

與下面的數據幀,你可以運行兩個評價(每行一個)和將結果與&運算符結合使用。這會返回TRUE/FALSE值的向量,您可以使用which()函數將其減少到索引。然後將其應用於數據框行參考,並指定要從該行返回的列。

a = c(1, 1, 1, 2, 2, 2) 
b = c(1,2,3,1,2,3) 
c = c(10,11,12,13,14,15) 
d = c(16,17,18,19,20,21) 
e = data.frame(a,b,c,d) 

e[which(e$a == 2 & e$b == 2), 'c'] 
相關問題