我有一个数据框(studentData)
StudentID Freshmen Sophomore Lot200 Lot700
001 1 0 200 000
002 0 1 200 700
003 1 0 200 000
我想要了解不同学年的停车时间。如果新生是1岁,那么大二的相似之处是1。
想拥有此数据框(费用)
Freshmen Sophomore
400 900
尝试
if(length(which(studentData$Freshmen ==1))
{
costs$Freshmen <- studentData$Lot200 + studentData$Lot700
}
但是这导致每个条目都返回TRUE,并且无论学年如何,都有效地增加了每个学生的停车费用。我有什么想法可以纠正这个问题吗?
答案 0 :(得分:1)
你可以试试这个:
library(tidyverse)
df %>%
mutate(lot_sum = Lot200 + Lot700,
Freshmen = sum(lot_sum * Freshmen),
Sophomore = sum(lot_sum * Sophomore)) %>%
distinct(Freshmen, Sophomore)
返回:
Freshmen Sophomore
1 400 900
答案 1 :(得分:0)
我会像tyluRp一样使用dplyr
。在基数R中,您可以得到相应的数量:
f = sum(studentData[studentData$Freshmen == 1,]$Lot200,
studentData[studentData$Freshmen == 1,]$Lot700)
s = sum(studentData[studentData$Sophomore == 1,]$Lot200,
studentData[studentData$Sophomore == 1,]$Lot700)
然后使用data.frame
构建您想要的框架。
df = data.frame(Freshmen = f, Sophomore = s)
乏味,甚至可能不是最好的基础R解决方案。但这是获得所需金额的更惯用的方式。