标签: plyr

函数"diff"在R中的各个组

我有一个数据框,有2组1时间变量和一个因变量.例如:

name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b")
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3")
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008")
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100)

df <- data.frame(name, …
Run Code Online (Sandbox Code Playgroud)

r plyr

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

像问题一样,但需要数据帧输出 - R.

这是我的第一篇文章,希望我能解释一下我需要做些什么.我对R来说还是很新,我可能已经阅读了回答这个问题的帖子,但我不能为我的生活理解他们的意思.如果已经回答,请提前道歉.

我有一个非常大的GPS位置数据集来自radiocollars,并且每天的位置数量不一致.我想浏览数据集,并根据GPS信号的准确度选择每天的单个数据点.

所以它基本上看起来像这样.

Accuracy    Month    Day    Easting    Northing    Etc
   5          6       1     #######    ########     #
   3.2        6       1     #######    ########     #
   3.8        6       1     #######    ########     #
   1.6        6       2     #######    ########     #
   4          6       3     #######    ########     #
   3.2        6       3     #######    ########     #
Run Code Online (Sandbox Code Playgroud)

我想在保留其余相关数据的同时,为每天提取最准确的点(最低精度度量).

目前我一直在使用tapply功能

datasub1<-subset(data,MONTH==6)
tapply(datasub1$accuracy, datasub1$day, min)
Run Code Online (Sandbox Code Playgroud)

使用这种方法,我可以成功检索最小值,每天一个,但我不能采取相关的坐标和时间,以及所有其他重要信息以及它,因为数据集是近30万行,我真的可以不要手工做.

基本上,我需要获得与tapply相同的结果,但是我需要找到该点的整个行而不是单个点.

提前感谢任何可以伸出援助之手的人.如果您需要更多信息,请告诉我,我会尽力为您服务.

gps r plyr tapply

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

来自wide data.frames的摘要数据表

我试图找到data.frames从广泛创建汇总表的懒惰/简单方法data.frames.假设有一个以下data.frame,但是有更多列,因此指定列名需要很长时间:

set.seed(2)
x <- data.frame(Rep = rep(1:3, 4), Temp = c(rep(10,6), rep(20,6)), 
pH = rep(c(rep(8.1, 3), rep(7.6, 3)), 2),
Var1 = rnorm(12, 5,2), Var2 = c(rnorm(6,4,1), rnorm(6,3,5)),
Var3 = rt(12, 20))
x[1:3] <- as.data.frame(apply(x[1:3], 2, function(x) as.factor(x)))
Run Code Online (Sandbox Code Playgroud)

现在,我可以计算汇总统计信息plyr:

(mu <- ddply(x, .(Temp, pH), numcolwise(mean)))
(std <- ddply(x, .(Temp, pH), numcolwise(sd)))
(n  <- ddply(x, .(Temp, pH), numcolwise(length)))
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何同时应用所有这些功能:

ddply(x, .(Temp, pH), numcolwise(mean, sd, length))
Run Code Online (Sandbox Code Playgroud)

我当然可以合并各种摘要data.tables,但这不是一种"懒惰/简单"的方式.我正在寻找一些我可以在许多情况下应用的一般内容.这样的事情,除了应该可以使用单个函数生成:

xx <- merge(mu, std, by = c("Temp", "pH"), sotr = …
Run Code Online (Sandbox Code Playgroud)

r summary plyr dataframe

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

ddply总结了多个变量

我看到ddply很好地按变量汇总和分组.我希望ddply只扫描一个非常大的数据帧,并为多个变量提供一个计数(长度).如何才能做到这一点?例如:

inc <- c('inc123', 'inc332', 'inc231', 'inc492', 'inc872', 'inc983')
hw <- c('ss23', 'ss43', 'ss98', 'ss98', 'ss23', 'ss23')
app <- c('lkl', 'dsd', 'lkl', 'jhj', 'lkl', 'dsd')
srvc <- c('rr', 'oo', 'rr', 'qq', 'qq', 'pp')

df <- data.frame(inc, hw, app, srvc)
ddply(df, .(hw), summarise, count = length(inc))
Run Code Online (Sandbox Code Playgroud)

以上将给我计算独特的hw的数量.如果我做

ddply(df, .(hw, app, srvc), summarise, count = length(inc))
Run Code Online (Sandbox Code Playgroud)

我的目标是丢失 - 因为ddply采用hw,app,srvc的每个"独特"组合并计算这些.

有没有办法在一次性中获得所有3个变量的计数?期望得到的df是这样的:(可能有不同的行数).

    hw count
1 ss23     3
2 ss43     1
3 ss98     2

    app count
1   dsd     2
2   jhj     1
3 linux     1 …
Run Code Online (Sandbox Code Playgroud)

r count plyr

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

在不同列中压缩具有NA的行以创建单个行

我有这样的数据框

test <- data.frame(id = rep(LETTERS[1:2],each = 3), 
    a = c(1,NA,NA,10,NA,NA), 
    b = c(2,NA,NA,20,NA,NA), 
    c = c(NA,3,NA,NA,30,NA), 
    d = c(NA,NA,4,NA,NA,40))
Run Code Online (Sandbox Code Playgroud)

我得到了这个数据帧,并希望将其转换为每个唯一的'id'只有一行,而数据帧中没有NA.

我这样做

ddply(test, 
    .variables = 'id', 
    .fun = function(df){
        colSums(df[,1:4], na.rm = T)})
Run Code Online (Sandbox Code Playgroud)

获取此data.frame

      id  a  b  c  d
    1  A  1  2  3  4
    2  B 10 20 30 40
Run Code Online (Sandbox Code Playgroud)

它有效,但是有一种更直接的方法可以不使用colSums,压缩行来为每个'id'创建一行,因为在每个'id'中,所有列只有一个值,其余的是NAs .我确实遇到了类似的请求,同时寻找其他东西,但现在找不到它!

谢谢

r plyr dataframe

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

针对矩阵的每列线性回归矢量

我有一个非常简单的问题,我相信有一个优雅的答案(我也确定上面的标题是不合适的).我有一个y值的向量:

y = matrix(c(1, 2, 3, 4, 5, 6, 7), nrow=7, ncol=1)
Run Code Online (Sandbox Code Playgroud)

我想对矩阵中的每一列进行回归,x:

x = matrix(c(1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 4, 4, 4, 4, 4, 4, 4), nrow=7, ncol=3)
Run Code Online (Sandbox Code Playgroud)

例如,我想将x的第一列与y线性回归,然后x的第二列对y进行线性回归,直到达到x的最后一列:

regression.1=lm(y~x[,1])
regression.2=lm(y~x[,2])
Run Code Online (Sandbox Code Playgroud)

我稍后想要绘制这些回归与其他参数的斜率,因此如果模型系数参数可以通过常规方式轻松访问,那将非常有用:

slope.1 = summary(regression.1)$coefficients[2,1]
Run Code Online (Sandbox Code Playgroud)

我正在使用像plyr这样的东西来猜测一个列表,但是我对这个游戏来说太新了,无法找到最简单的编码方法.

loops r matrix linear-regression plyr

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

如果nrow = 1,则跳过ddply

我有一个ddplyIP列表,并在每个IP上应用乐趣.我希望有趣的是只返回一个值nrow(ip.data) > 1.否则,我想ddply跳过该IP并继续.我怎样才能做到这一点?

例如:

pd.outs <- ddply(server_ips, .(ip), function(x) get.ip.outs(x$ip, data))
Run Code Online (Sandbox Code Playgroud)

nrow(ip.data) 将提供(数据)子集中行数的长度.

r skip plyr

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

R:用ddply分组测试

我试图计算每个因子级别的数据框中两个数字列之间的相关性.这是一个示例数据框:

concentration <-(c(3, 8, 4, 7, 3, 1, 3, 3, 8, 6))
area <-c(0.5, 0.9, 0.3, 0.4, 0.5, 0.8, 0.9, 0.2, 0.7, 0.7)
area_type <-c("A", "B", "A", "B", "A", "B", "A", "B", "A", "B")
data_frame <-data.frame(concentration, area, area_type)
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我想计算每个level_type级别的浓度和面积之间的相关性.我想使用cor.test而不是cor,因为我想要p值和kendall tau值.我试过用ddply做到这一点:

ddply(data_frame, "area_type", summarise,
  corr=(cor.test(data_frame$area, data_frame$concentration,
                 alternative="two.sided", method="kendall") ) )
Run Code Online (Sandbox Code Playgroud)

但是,我遇到输出问题:它的组织方式与正常的Kendall cor.test输出不同,后者表示z值,p值,备选假设和tau估计.而不是那样,我得到下面的输出.我不知道输出的每一行表示什么.此外,每个level_type级别的输出值都相同.

  area_type                                         corr
1          A                                    0.3766218
2          A                                         NULL
3          A                                    0.7064547
4          A                                    0.1001252
5          A                                            0
6          A                                    two.sided
7          A               Kendall's rank correlation tau
8          A data_frame$area …
Run Code Online (Sandbox Code Playgroud)

r plyr

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

找到字符串中的大写字母

我想在每个字符串中找到大写字母,并计算每个字符串的数量,例如

t = c("gctaggggggatggttactactGtgctatggactac", "gGaagggacggttactaCgTtatggactacT", "gcGaggggattggcttacG")  

ldply(str_match_all(t,"[A-Z]"),length)
Run Code Online (Sandbox Code Playgroud)

当应用上述功能时,我的输出是

1 4 2
Run Code Online (Sandbox Code Playgroud)

但我的愿望输出是

[1] G -1

[2] G -1 C -1 T -2

[3] G -2

r plyr stringr

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

Alternative to plyr::mapvalues in data.table

I am looking for a readable alternative to plyr::mapvalues in data.table.

例如,在中plyr::mapvalues,如果我想将carbin 的值更改mtcarstype1, type2, type3,则可以执行以下操作:

library(tidyverse)

mtcars %>% 
  mutate(carb = plyr::mapvalues(
    carb,
    from = c("1", "2", "3", "4", "6", "8"),
    to = c("type1", "type1", "type2", "type2", "type3", "type3")))
Run Code Online (Sandbox Code Playgroud)

为了获得相同的效果data.table,我会这样做,但这似乎不是常规方法:

library(data.table)

dt <- data.table(mtcars)
dt$carb <- as.character(dt$carb)

dt[which(carb %in% c("1", "2")), 
   carb := "type1"]

dt[which(carb %in% c("3", "4")), 
   carb := "type2"]

dt[which(carb %in% c("6", "8")), 
   carb := "type3"]
Run Code Online (Sandbox Code Playgroud)

是否可以在一个条件(dt[...] …

r plyr dataframe dplyr data.table

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

标签 统计

plyr ×10

r ×10

dataframe ×3

count ×1

data.table ×1

dplyr ×1

gps ×1

linear-regression ×1

loops ×1

matrix ×1

skip ×1

stringr ×1

summary ×1

tapply ×1