标签: plyr

如果没有观察结果,请在使用 ddply 创建的数据框中添加一行零

我使用函数ddply(package plyr) 来计算每组“试验”和“治疗”的响应变量的平均值。我得到这个数据框:

\n\n
Trial   Treatment   N   Mean\n1           A      458  125.258\n1           B      459  168.748\n2           A      742  214.266\n2           B      142  475.786\n3           A      247  145.689\n3           B      968  234.129\n4           A      436  456.287\n
Run Code Online (Sandbox Code Playgroud)\n\n

该数据框表明,在试验 4 和治疗 B 中,没有响应变量的观察结果(因为数据框中没有指定行)。那么,当给定的响应变量没有观测值时,是否可以在数据框中自动添加一行零(使用函数 \xe2\x80\x9cddply\xe2\x80\x9d 构建)?

\n\n

我想得到这个数据框:

\n\n
Trial   Treatment   N   Mean\n1           A      458  125.258\n1           B      459  168.748\n2           A      742  214.266\n2           B      142  475.786\n3           A      247  145.689\n3           B      968  234.129\n4           A      436  456.287\n4           B       0   0\n
Run Code Online (Sandbox Code Playgroud)\n

r plyr

2
推荐指数
1
解决办法
1801
查看次数

当存在重复时如何根据优先级重新分类/替换值

我有一个 df 其中value指示 a 的状态drug

g1 = data.frame ( 
    drug = c('a','a','a','d','d'),
    value = c('fda','trial','case','case','pre')
)

drug value
1    a   fda
2    a trial
3    a  case
4    d  case
5    d   pre
Run Code Online (Sandbox Code Playgroud)

drug因此,对于药物,我想根据以下优先级顺序替换任何重复value

fda > trial > case > pre 
Run Code Online (Sandbox Code Playgroud)

例如,如果药物 d 既是“病例”又是“前”,则 d 的所有发生率都将被重新分类为“病例”。决赛桌应该是这样的。

  drug value
1    a   fda
2    a   fda
3    a   fda
4    d  case
5    d  case
Run Code Online (Sandbox Code Playgroud)

如何做到这一点,而不必循环遍历每种药物并首先找出优先级然后进行替换?

r plyr dplyr r-factor

2
推荐指数
1
解决办法
465
查看次数

如何将不同的聚合函数应用于R中的不同列?

如何将不同的聚合函数应用于R中的不同列?该aggregate()函数只提供一个要传递的函数参数:

V1  V2        V3
1   18.45022  62.24411694
2   90.34637  20.86505214
1   50.77358  27.30074987
2   52.95872  30.26189013
1   61.36935  26.90993530
2   49.31730  70.60387016
1   43.64142  87.64433517
2   36.19730  83.47232907
1   91.51753  0.03056485
... ...       ...

> aggregate(sample,by=sample["V1"],FUN=sum)
  V1 V1       V2       V3
1  1 10 578.5299 489.5307
2  2 20 575.2294 527.2222
Run Code Online (Sandbox Code Playgroud)

如何申请一个不同的功能,每列,即聚合V2mean()功能,V2sum()功能,无需调用aggregate()多次?

r plyr data.table

1
推荐指数
2
解决办法
6102
查看次数

为什么dlply中没有进度条(在R plyr包中)

我正在使用plyr包来处理列表和数据帧.我注意到以下行为:

例1 -

list_2 <- llply(list_1, function_1, .progress='text')
Run Code Online (Sandbox Code Playgroud)

这按预期工作.它从list_1生成list_2,其中function_1应用于每个list_1元素,我看到进度条.

例2 -

list_3 <- dlply(list_2, function_2, .progress='text')
Run Code Online (Sandbox Code Playgroud)

这也适用于我在list_3中获得我期望的结果,但是,我没有得到进度条.

总之,为什么进度条不适用于dlply但适用于llply.(它也适用于ldply).

r plyr progress-bar

1
推荐指数
1
解决办法
966
查看次数

DDPLY分组错误

我正在运行一个ddply函数并继续出错.

data.frame的结构:

str(visits.by.user)
'data.frame':   80317 obs. of  5 variables:
 $ ClientID    : Factor w/ 147792 levels "50912733","50098716",..: 1 3 4 5 6 7 8 10 11 12 ...
 $ TotalVisits      : int  64 231 18 21 416 290 3 13 1 7 ...
 $ TotalDayVisits: int  8 141 0 4 240 155 0 0 0 0 ...
 $ TotalNightVisits: int  56 90 18 17 176 135 3 13 1 7 ...
 $ quintile         : Factor w/ 5 levels …
Run Code Online (Sandbox Code Playgroud)

r plyr

1
推荐指数
1
解决办法
8683
查看次数

使用ddply计算组特征

我有一个与计算"组特征"相关的后续问题,没有ddply和merge

我有一个类似的数据框(如下所示),但试图计算同一类别中其他水果中腐烂水果的百分比.因此,我不应该考虑到有问题的水果本身是否腐烂.每个数据帧有希望澄清这一点,所需的结果列纯粹是为了示例目的而插入的.

理想情况下,我想使用ddply(沿着ddply(df,.(Fruit),mutate,Perc = sum(Rotten)/ length(Rotten))).但是,我找不到一种方法来只考虑同一组中其他行的值.我想我可以使用基于相关行的值的if语句组合,但我想知道是否有更优雅的方法来实现这一点?非常感谢,W

    Fruit Rotten Desired_Outcome
1   Apple      1            0.33
2   Apple      1            0.33
3   Apple      0            0.66
4   Apple      0            0.66
5    Pear      1            0.66
6    Pear      1            0.66
7    Pear      1            0.66
8    Pear      0            1.00
9  Cherry      0            0.00
10 Cherry      0            0.00
11 Cherry      0            0.00
12 Banana      1              NA

Fruit=c(rep("Apple",4),rep("Pear",4),rep("Cherry",3),"Banana")
Gender=c(rep("Male",3),rep("Female",3))
Rotten=c(1,1,0,0,1,1,1,0,0,0,0,1)
Desired_Outcome=c(0.33,0.33,0.66,0.66,0.66,0.66,0.66,1,0,0,0,NA)
df=data.frame(Fruit,Rotten,Desired_Outcome)     
df
Run Code Online (Sandbox Code Playgroud)

aggregate r plyr

1
推荐指数
1
解决办法
826
查看次数

使用ddply和汇总时的结果不同.由于R和plyr版本不同?

我想总结一下类似于数据集包中的ToothGrowth数据的数据.

我想要的输出如下:

  supp   len  half   one   two
1   OJ 619.9 132.3 227.0 260.6
2   VC 508.9  79.8 167.7 261.4
Run Code Online (Sandbox Code Playgroud)

这是按剂量和补充类型分开的长度之和.我的同事使用以下代码使用R版本2.15.1和plyr_1.7.1获取此输出.

library(datasets)           

x <- ToothGrowth

test <- ddply(x,c("supp"),summarize,
                     len = sum(len,na.rm=TRUE),
                     half = sum(len[dose==0.5],na.rm=TRUE),
                     one = sum(len[dose==1],na.rm=TRUE),
                     two = sum(len[dose==2],na.rm=TRUE))
Run Code Online (Sandbox Code Playgroud)

ToothGrowth数据中没有NA,但真实数据集中有.

我得到以下输出R版本3.0.0和plyr_1.8.如果有用,我可以为两者提供完整的sessionInfo().

    supp    len half    one two
1   OJ    619.9 619.9   0   0
2   VC    508.9 508.9   0   0
Run Code Online (Sandbox Code Playgroud)

这似乎没有出现错误.在我的数据中,我只有三个'剂量',但很多'补充类型'.如果半类中没有值,则将全部总和设为一个或两个.

有没有一种方法可以实现这一点,从而在版本类型中产生一致的输出?

谢谢你的帮助.

r plyr

1
推荐指数
1
解决办法
1130
查看次数

R - 查看所有独特列对的最快方法

我有一个数据框,M,我想计算M列之间的所有成对相关性.我可以使用应用函数轻松完成此操作,例如

pvals = laply(M, function(x) llply(M, function(y) cor.test(x, y)$p.value))
Run Code Online (Sandbox Code Playgroud)

然而,这个解决方案正在完成所需工作的2倍,因为x和y之间的相关性与y和x之间的相关性相同.

我正在寻找一种快速,简单的方法来计算独特的列对之间的所有相关性.我希望结果是NxN矩阵,其中N = ncol(M).我已经在Stack Overflow上搜索了很长时间,但找不到任何能做到这一点的东西.谢谢!

r apply plyr lapply correlation

1
推荐指数
1
解决办法
798
查看次数

无法在Ubuntu 12.04.4上为R 2.15.3安装软件包reshape2

我在Ubuntu 12.04.4 LTS上安装R 2.15.3的reshape2软件包时遇到问题.我决定不升级到R 3.x,因为我使用的许多软件包尚未升级以支持新版本.

当我尝试在Ubuntu 12.04.4 LTS上使用R 2.15.3安装reshape2时,我得到以下内容.

> install.packages("reshape2")                                                                                      
Installing package(s) into â/usr/local/lib/R/site-libraryâ
(as âlibâ is unspecified)
Warning in install.packages("reshape2") :
  'lib = "/usr/local/lib/R/site-library"' is not writable
Would you like to use a personal library instead?  (y/n) y
Would you like to create a personal library
~/R/x86_64-pc-linux-gnu-library/2.15
to install packages into?  (y/n) y

Warning: dependency âRcppâ is not available
also installing the dependencies âplyrâ, âstringrâ

trying URL 'http://cran.cs.wwu.edu/src/contrib/plyr_1.8.1.tar.gz'
Content type 'application/x-gzip' length 393233 bytes (384 Kb)
opened URL …
Run Code Online (Sandbox Code Playgroud)

r plyr rcpp reshape2 ubuntu-12.04

1
推荐指数
1
解决办法
4779
查看次数

在plyr引发问题后加载dplyr

测试用例:

library(dplyr)
library(plyr)
library(dplyr)
mtcars%>%rename(x=gear)
Run Code Online (Sandbox Code Playgroud)

这给出了错误.任何帮助将不胜感激.

r plyr dplyr

1
推荐指数
2
解决办法
4124
查看次数