标签: plyr

如何使用ddply与多个列关联?

我有一个data.frame,我想用一列相对于其他列(框架中也有一些非数字列)来计算相关系数。

ddply(Banks,.(brand_id,standard.quarter),function(x) { cor(BLY11,x) })
# Error in cor(BLY11, x) : 'y' must be numeric
Run Code Online (Sandbox Code Playgroud)

我针对is.numeric(x)进行了测试

ddply(Banks,.(brand_id,standard.quarter),function(x) { if is.numeric(x) cor(BLY11,x) else 0 })
Run Code Online (Sandbox Code Playgroud)

但是每次比较都失败,返回0,仅返回一列,就好像它仅被调用过一次一样。什么传递给该函数?刚来到R,我认为我缺少一些基本知识。

谢谢

r plyr correlation

0
推荐指数
2
解决办法
3576
查看次数

在 R 的包函数中使用 ddply 的可视化绑定

我有一个类似的问题,就像这里已经讨论过的一样: Novisible绑定for全局变量Note in R CMD check

就我而言,我在自己的包中使用 ddply 函数,当我检查 R 包时,我得到一条注释:“全局变量‘VARX’没有可见的绑定。

所寻址的代码行是:

subsample <- ddply(my_data, .(VARX), function(x){x[sample(nrow(x), 1), ]})
Run Code Online (Sandbox Code Playgroud)

变量 VARX 是包 (sysdata) 提供的数据帧中的一列。改进代码以获得适当的 R 包的良好做法是什么?

r package plyr

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

如何动态子集值并计算均值

我有一个包含三个变量(ACC和类型和ID)的数据框,其中ACC指的是决策的准确性,类型是指30种不同的决策类型,对于参与者的每种决策类型重复15次,ID指的是对参与者.它看起来像这样:

ID     ACC     Type
1       1       1
1       0       3   
1       1      10
etc...
2       1       5
2       0      13
2       0      11
etc...
Run Code Online (Sandbox Code Playgroud)

我的目标是分析参与者中每种决策类型的准确性,并将数据合并到数据框中.如:

ID    ACC_Type1     ACC_Type2 […]  ACC_Type30
1       70             65             87
2       65             50             90
etc...
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能够通过单独分组决策类型来计算,但是,我正在寻找一种更智能的方法来避免单独键入决策类型值:

library(data.table)
library(plyr)
dt <- data.table(d,key="Type")
dt_Type1<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==1),mean))
dt_Type2<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==2),mean))
[]
dt_Type30<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==30),mean))

total <- merge(dt_Type1,dt_Type2 […] Type30,by="ID") 
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

aggregate r subset plyr

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

R 中的 %dopar% 无法正常工作

我刚刚开始在 R 中使用 foreach 和 %dopar% 方法进行并行处理,但是我得到的结果令人困惑,并且与 for 循环不同;这是我用来测试这些方法和得到的结果的代码:

library(plyr); library(doParallel); library(foreach)

cs <- makeCluster(2)
registerDoParallel(cs)

sfor_start <- Sys.time()
s_for=as.numeric()
for (i in 1:1000) {
  s_for[i] = sqrt(i)
}
print(Sys.time() - sfor_start)

sdopar_start <- Sys.time()
sdopar=as.numeric()
foreach(k=1:1000) %dopar% {
  sdopar[k] = sqrt(k)
}
print(Sys.time() - sdopar_start)
Run Code Online (Sandbox Code Playgroud)

结果如下:

> s_for[1:10]; sdopar[1:10]
 [1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427 3.000000 3.162278
 [1] NA NA NA NA NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

parallel-processing foreach r plyr

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

R - 用 NA 替换特定值内容

我有一个相当大的数据框,其中有多个“-”代表丢失的数据。数据框由多个 Excel 文件组成,无法使用“na.strings =”或替代函数,因此我必须使用“-”表示导入它们。

如何用 NA / 缺失值替换数据框中的所有“-”?数据框由 200 列字符、因子和整数组成。

到目前为止,我已经尝试过:

sum(df %in c("-"))
returns: [1] 0

df[df=="-"] <-NA #does not do anything

library(plyr)
df <- revalue(df, c("-",NA))
returns: Error in revalue(tmp, c("-", NA)) : 
  x is not a factor or a character vector.

library(anchors)
df <- replace.value(df,colnames(df),"-",as.character(NA))
Error in charToDate(x) : 
  character string is not in a standard unambiguous format
Run Code Online (Sandbox Code Playgroud)

数据框由 200 列字符、因子和整数组成,所以我可以理解为什么最后两个不能正常工作。任何帮助,将不胜感激。

r missing-data plyr

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

按 r 中的键值求和

我有一个看起来像这样的数据集。您可以看到列 X2 具有键值。我想通过 X2 列中的键值对 X1 列中的对值求和。我一直在尝试使用 ddply 或聚合,但我遇到了问题。有没有人有一个简单的方法来做到这一点?

> X1=rnorm(30,mean=20, sd=10)
> X2=rep(1:15,2)
>df= data.frame(X1,X2)
          X1 X2
1  10.065545  1
2   6.938315  2
3   5.657782  3
4  11.371521  4
5  37.037992  5
6  13.443674  6
7   8.868314  7
8   5.944946  8
9  18.493563  9
10 16.059931 10
11 22.520693 11
12 17.172936 12
13 28.676676 13
14 27.200911 14
15 30.560696 15
16 22.435021  1
17 31.143627  2
18 19.234473  3
19 29.329251  4
20 18.420183  5
21 13.184905 …
Run Code Online (Sandbox Code Playgroud)

aggregate r key key-value plyr

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