學習使用base
R.
數據子集(提取)
要將任何數據幀按其行和列分組使用[ ]
讓df
成爲您的數據幀。
FirstName SurName Subject Grade
1 Brian Smith History 75
2 Jenny Jackson English 60
3 Tom Brandon Physics 50
您可以通過它的行和列使用
df[rows,columns]
這裏rows
和column
可以子集是:
1)指數(編號/名稱)
哪意味着給我那個特定的行和列的子集,如
df[2,3]
這將返回第二行和第三列
[1] English
或
df[2,"Grade"]
返回
[1] 60
2)範圍(人名的指數/列表)
這意味着子集,它給我的這些行和列像
df[1:2,2,drop=F]
這裏drop=F
避免結果的扁平化和輸出像data.frame。它會給你這個
SurName
1 Smith
2 Jackson
範圍還支持all
留下行或列空的像
df[,3,drop=F]
這將返回all
行爲third column
Subject
1 History
2 English
3 Physics
或
df[1:2,c("Grade","Subject")]
Grade Subject
1 75 History
2 60 English
3)邏輯
這意味着你要使用邏輯條件的子集。
df[df$FirstName=="Brian",]
意思給我rows
其中FirstName
是它Brian
和all
列。
FirstName SurName Subject Grade
1 Brian Smith History 75
或
df[df$FirstName=="Brian",1:3]
給我行,其中FirstName
爲Brian
,給我的只有1至3列。
或創建複雜的邏輯值
df[df$FirstName=="Brian" & df$SurName==" Smith",1:3]
輸出
FirstName SurName Subject
1 Brian Smith History
或複雜的邏輯和提取柱按名稱
df[df$FirstName=="Brian" & df$SurName==" Smith","Grade",drop=F]
Grade
1 75
或複雜的邏輯和提取由名稱多個列
df[df$FirstName=="Brian" & df$SurName==" Smith",c("Grade","Subject")]
Grade Subject
1 75 History
使用這個函數中做
myfunc<-function(input_var1,input_var2,input_var3)
{
df[df$FirstName==input_var1 & df$SurName==input_var2 & df$Subject==input_var3,"Grade",drop=F]
}
來看,它這樣
myfunc("Tom","Brandon","Physics")
如果我理解正確的,你只需要合併的exaple A =合併(A,B,通過。 x = c(「FirstName」,「SurName」,「Subject」),by.y = c(「FirstName」,「SurName」,「Subject」),all.x = T) – Batanichek
也許你想子集數據?看看'?subset'和'?'[。data.frame'' –
哇,這些對於這個問題來說似乎是不必要的複雜。感謝您的幫助! – Henry