如何过滤两个单独的csv文件并返回输出?

时间:2019-06-14 02:41:14

标签: r dplyr

所以,我是R的新手。所以这可能是一个愚蠢的问题。我有一个需要做的作业。我的想法是,我有两个csv文件,即会费和候选人。第一个是对候选人的捐款金额,第二个是包括政党在内的候选人信息。

我的任务是仅过滤一方为“ R”的候选人,然后找到对“ R”的平均捐款。

我考虑过使用dplyr软件包来完成此任务。

我的第一个想法是将其分为两个部分,即捕获一方为“ R”的候选人并将其存储在数据框中。我虽然遇到错误

  

没有适用于“ select_”的适用于类“ c('mts','ts')”的对象的方法

df_donations <- select(filter(dataread_candidates,dataread_candidates$party  =="R"))
dataread_candidates <- read.csv("candidates.csv", header = TRUE)
dataread_contributions <- read.csv("contributions.csv", header = TRUE)

有什么方法可以单行执行吗?还是需要像我最初想到的那样将其拆分?

2 个答案:

答案 0 :(得分:1)

这是您要找的东西吗?

Donations <- fread("CANDIDATE_NAME  DONATIONS
Trump   100
Sanders 1000
Hillary 890
Lincoln 1500
Bush    600")



Candidates <- fread("CANDIDATE_NAME PARTY
Trump   R
Sanders D
Hillary D
Lincoln R
Bush    R")


Donations %>% inner_join(Candidates, by = "CANDIDATE_NAME") %>%
group_by(PARTY) %>% summarise(AverageDonations = mean(DONATIONS)) %>% filter(PARTY == "R")

 PARTY AverageDonations
  <chr>            <dbl>
1 R                 733.

答案 1 :(得分:-1)

如果没有数据结构的示例,这将是非常普遍的情况。如果您使用data.table软件包,则可以遵循以下概念,并且可以使用fread()代替read.csv()(如果您有10,000多个捐助者,则将有所帮助)。

代码概念

dt[ , mean(`Donation`, na.rm = TRUE), by = `party`] 

如果您provide an example dataset,我们可以为您提供更好的帮助。使用data.table,可以将合并合并在同一行上。