学习使用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