在执行if语句时循环数据帧

时间:2017-02-28 08:29:18

标签: r loops if-statement

R新手问题。 我有一个数据框(wealth_df),每行分为五分之一(1到5)。我想在每一行上做循环,找到每个项目对每个五分位数的观察次数并将它们存储在一个表格中。

    **   Car Bicycle Motorcycle Boat House Quintiles_Score**
     1   0.5   0.2     0.4       0.6  0.8    1
     2   0     0.2     0.4       0     0     2
     3   0.5   0       0.4       0.6   0     1
     4   0     0.2     0         0     0     3    
     5   0     0       0.4       0     0.8   4
     6   0.5   0       0         0     0     4

我已经完成了以下操作,但由于数据框很大,所以它太繁琐了。

library(Tidyverse)
#owns a car and in quintile 1
Car_Q1 <- filter(wealth_df, wealth_df$car == 0.5 & wealth_df$Quintile == 1)
No_CarQ1 <- nrow(CarQ1)
print(No_CarQ1)

#owns a boat and in quintile 4
Boat_Q4 <- filter(wealth_df, wealth_df$Boat == 0.8 & wealth_df$Quintile == 4)
No_BoatQ4 <- nrow(BoatQ4)
print(No_BoatQ4)

预期输出为:

拥有汽车并且在五分之一的人是:2

拥有汽车并且处于五分位数的人是:0

拥有汽车并且在五分之一的人是:0

拥有汽车并且处于五分位数的人是:1

拥有汽车并且在五分之一的人是:0

1 个答案:

答案 0 :(得分:0)

使用package plyr中的函数ddply来汇总Quintile_Score的每个变量:

ddply(wealth_df, .(Quintiles_Score..), summarize, 
Car=length(Car[Car!=0]), Bicycle=length(Bicycle[Bicycle!=0]))