使用R

时间:2016-08-20 13:10:28

标签: r

我能够生成3D频率表,但我很难与他们合作以获取我想要的信息。什么是解决这个问题的最佳方法?

我有什么

一个名为选票的数据框,其中包含membervote_timevote列,所有字符串。投票列中的可能值为Yes,No,Abstain,Present和Absent。 membervote_time值的每个组合只有一行。 vote_times有点随机,因为大多数日期没有投票,有些有一个,有些有几个票。

我想要什么

包含membervote_dateabsent_ratio列的数据框。 absent_ratio列会显示给定成员在缺席而不是是或否等时输入的选票百分比等。

我尝试过什么

在原始数据框中添加vote_date列非常简单。

ballots$vote_date <- as.Date(ballots$vote_time)

我尝试过使用内置的table函数和count包中的plyr函数。他们能够给出给定成员/日期组合的缺席选票的,但我不知道如何将其变成比率。

library(plyr)
daily_vote_count <- count(ballots, c('vote_date', 'name_en'))
daily_count_by_vote <- count(ballots, c('vote_date', 'vote', 'name_en'))
daily_absense_rate <- subset(daily_count_by_vote,
  name_en == daily_vote_count$name_en &
  vote_date == daily_vote_count$vote_date &
  vote == "Absent"
)$freq / daily_vote_count # DOESN'T WORK

警告指出我正在处理不同长度的物体,但我不确定如何改变我的方法。感谢你给我的任何提示。

等效问题

由于有人指出这很难在没有任何数据的情况下提出建议,所以这是使用mtcars的同等问题。 适用于气缸和气缸的每个组合齿轮数,有多少百分比的汽车燃油效率超过每加仑20英里?

使用此命令,我可以计算每组中的汽车数量。

table(mtcars$mpg>20, mtcars$cyl, mtcars$gear)

我无法弄清楚如何计算正确的百分比。每个TRUE / FALSEcyl + gear的比例应该增加到100%。但是prop.table()似乎没有返回我想要的东西。

prop.table(table(mtcars$mpg>20, mtcars$cyl, mtcars$gear))    # No
prop.table(table(mtcars$mpg>20, mtcars$cyl, mtcars$gear),1)  # Nope
prop.table(table(mtcars$mpg>20, mtcars$cyl, mtcars$gear),2)  # Still wrong

我也尝试重新安排table()功能中的参数,但我还没有找到正确的答案。

2 个答案:

答案 0 :(得分:2)

此:

ansible_user: Administrator
ansible_password: SecretPasswordGoesHere
ansible_port: 5986
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore 

为您提供每个组合汽缸/齿轮的汽车总数。这样:

with(mtcars, tapply(mpg>19, list(cyl=cyl,gear=gear), length))

为您提供每个cyl / gear组合with(mtcars, tapply(mpg>19, list(cyl=cyl,gear=gear), sum)) 的汽车数量。因此,这个:

mpg>19

为您提供燃料效率大于或等于每加仑20英里的汽车的单元百分比。

答案 1 :(得分:1)

你非常接近,但你需要总计超过2个边距。我正在重新安排你的例子,所以“投票”就像你原来的问题一样:

> tab <- xtabs(~cyl+gear+I(mpg>20), mtcars)
> prop.table(tab, 1:2)
, , I(mpg > 20) = FALSE

   gear
cyl   3   4   5
  4 0.0 0.0 0.0
  6 0.5 0.5 1.0
  8 1.0     1.0

, , I(mpg > 20) = TRUE

   gear
cyl   3   4   5
  4 1.0 1.0 1.0
  6 0.5 0.5 0.0
  8 0.0     0.0

> prop.table(tab, 1:2)[ , , 2] # Proportion TRUE for each combo
   gear
cyl   3   4 5
  4 1.0 1.0 1
  6 0.5 0.5 0
  8 0.0 NaN 0

所有4缸汽车都超过20mpg而没有8缸汽车。获取数据框:

> as.data.frame.table(prop.table(tab, 1:2)[ , , 2])
  cyl gear Freq
1   4    3  1.0
2   6    3  0.5
3   8    3  0.0
4   4    4  1.0
5   6    4  0.5
6   8    4  NaN
7   4    5  1.0
8   6    5  0.0
9   8    5  0.0