查找特定选项是否位于数据帧R中

查找特定选项是否位于数据帧R中,r,R,我有一个数据框对象,其中包含一个可能的选择列表。例如,这方面的类比是: FirstName, SurName, Subject, Grade Brian, Smith, History, 75 Jenny, Jackson, English, 60 我怎么 1) 检查我的数据框中是否有某个学生-科目组合 2) 对于那些在那里的人,提取他们的分数(以及潜在的其他相关领域) ? 非常感谢 到目前为止,我找到的唯一解决方案包括将值附加到数据帧的末尾,并尝试查看它是否唯一?这似乎是一个粗鲁而可笑的黑客

我有一个
数据框
对象,其中包含一个可能的选择列表。例如,这方面的类比是:

FirstName, SurName, Subject, Grade
Brian, Smith, History, 75
Jenny, Jackson, English, 60
我怎么

1) 检查我的数据框中是否有某个学生-科目组合

2) 对于那些在那里的人,提取他们的分数(以及潜在的其他相关领域)

?

非常感谢


到目前为止,我找到的唯一解决方案包括将值附加到数据帧的末尾,并尝试查看它是否唯一?这似乎是一个粗鲁而可笑的黑客行为?

试试
子集

con <- textConnection("FirstName,SurName,Subject,Grade\nBrian,Smith,History,75\nJenny,Jackson,English,60")
dat <- read.csv(con, stringsAsFactors=FALSE)
subset(dat, FirstName=="Brian" & SurName=="Smith" & Subject=="History", Grade)

尝试
子集

con <- textConnection("FirstName,SurName,Subject,Grade\nBrian,Smith,History,75\nJenny,Jackson,English,60")
dat <- read.csv(con, stringsAsFactors=FALSE)
subset(dat, FirstName=="Brian" & SurName=="Smith" & Subject=="History", Grade)

我想你正在寻找这个:

result <- data[data$FirstName == "Brian" & data$Subject == "History", c("Grade") ]

result我想你在寻找这个:

result <- data[data$FirstName == "Brian" & data$Subject == "History", c("Grade") ]
result使用
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]
此处的
可以是:

1)索引(编号/名称)

也就是说,给我特定行和列的子集

df[2,3]
这将返回第二行和第三列

[1]  English

返回

[1] 60
2)范围(索引/名称列表)

这意味着给我这些行和列的子集

df[1:2,2,drop=F]
此处
drop=F
以避免结果和输出像data.frame一样扁平化。它会给你这个

   SurName
1    Smith
2  Jackson
Range还支持
all
,方法是将行或列保留为空,如

df[,3,drop=F]
这将返回第三列的所有行

   Subject
1  History
2  English
3  Physics

3)逻辑的

这意味着您希望使用逻辑条件进行子集

df[df$FirstName=="Brian",]
意思是给我
其中
FirstName
Brian
它的所有

  FirstName SurName  Subject Grade
1     Brian   Smith  History    75

请给出
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]
}
使用
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]
此处的
可以是:

1)索引(编号/名称)

也就是说,给我特定行和列的子集

df[2,3]
这将返回第二行和第三列

[1]  English

返回

[1] 60
2)范围(索引/名称列表)

这意味着给我这些行和列的子集

df[1:2,2,drop=F]
此处
drop=F
以避免结果和输出像data.frame一样扁平化。它会给你这个

   SurName
1    Smith
2  Jackson
Range还支持
all
,方法是将行或列保留为空,如

df[,3,drop=F]
这将返回第三列的所有行

   Subject
1  History
2  English
3  Physics

3)逻辑的

这意味着您希望使用逻辑条件进行子集

df[df$FirstName=="Brian",]
意思是给我
其中
FirstName
Brian
它的所有

  FirstName SurName  Subject Grade
1     Brian   Smith  History    75

请给出
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]
}

如果我理解正确,您只需要合并,例如a=merge(a,b,by.x=c(“名字”,“姓氏”,“主题”),by.y=c(“名字”,“姓氏”,“主题”),all.x=T)也许您想对数据进行子集化?看看
?subset
?“[.data.frame”
哇,这些问题似乎不必要的复杂。谢谢你的建议!如果我理解正确,你只需要合并,例如a=merge(a,b,by.x=c(“名字”,“姓氏”,“主题”),by.y=c(“名字”,“姓氏”,“主题”),all.x=T)也许您想对数据进行子集划分?请查看
?子集
?“[.data.frame”
Wow,对于这个问题来说,这些似乎不必要的复杂。感谢poiner!感谢Aggregate的提示。我上面的例子是对我试图做的事情的大规模简化,我怀疑可能对我的实际案例使用没有帮助。我拥有的是一个有效的数据框,其中包含了用户的所有可用选项+我想要的标签的关键地图对于有用的数字,我只想检查用户提供的选项是否在可能的选项范围内。我有一个包含所有可能选项的数据框,以及一系列关于这些选项的额外信息。上面的类比是,我想看看一个学生(Brian Smith)是否做了一个科目(历史)。如果是,我希望检索额外信息(在本例中为简化)这些都是我以后需要使用的变量。感谢Aggregate的提示。我上面的例子是对我正在尝试做的事情进行了大量简化,我怀疑可能对我的实际案例使用没有帮助。我拥有的是一个有效的数据框,其中包含了用户的所有可用选项+一个键,将标签映射为有用的数字,我只想检查用户提供的选项是否在可能的选项范围内。我有包含所有可能选项的数据框,以及一系列关于这些选项的额外信息。上面的类比是,我想看看一个学生(Brian Smith)是否做了一个科目(历史)。如果是这样,我希望检索额外信息(在本例中是简化的)这些都是我以后需要使用的变量。谢谢。我已经记下了其中的大部分,但这是我试图了解的最后面的部分-如何基于多个条件构造检查。在我的例子中,我想匹配3个条件并返回多个o