所以,我是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)
有什么方法可以单行执行吗?还是需要像我最初想到的那样将其拆分?
答案 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
,可以将合并合并在同一行上。