我使用函数ddply(package plyr) 来计算每组“试验”和“治疗”的响应变量的平均值。我得到这个数据框:
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\nRun Code Online (Sandbox Code Playgroud)\n\n该数据框表明,在试验 4 和治疗 B 中,没有响应变量的观察结果(因为数据框中没有指定行)。那么,当给定的响应变量没有观测值时,是否可以在数据框中自动添加一行零(使用函数 \xe2\x80\x9cddply\xe2\x80\x9d 构建)?
\n\n我想得到这个数据框:
\n\nTrial 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\nRun Code Online (Sandbox Code Playgroud)\n 我有一个 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中的不同列?该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)
如何申请一个不同的功能,每列,即聚合V2与mean()功能,V2与sum()功能,无需调用aggregate()多次?
我正在使用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).
我正在运行一个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) 我有一个与计算"组特征"相关的后续问题,没有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) 我想总结一下类似于数据集包中的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)
这似乎没有出现错误.在我的数据中,我只有三个'剂量',但很多'补充类型'.如果半类中没有值,则将全部总和设为一个或两个.
有没有一种方法可以实现这一点,从而在版本类型中产生一致的输出?
谢谢你的帮助.
我有一个数据框,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上搜索了很长时间,但找不到任何能做到这一点的东西.谢谢!
我在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) 测试用例:
library(dplyr)
library(plyr)
library(dplyr)
mtcars%>%rename(x=gear)
Run Code Online (Sandbox Code Playgroud)
这给出了错误.任何帮助将不胜感激.
plyr ×10
r ×10
dplyr ×2
aggregate ×1
apply ×1
correlation ×1
data.table ×1
lapply ×1
progress-bar ×1
r-factor ×1
rcpp ×1
reshape2 ×1
ubuntu-12.04 ×1