我试图在一个数据集中的多个主题上求和多个变量。我知道如何使用plyr包来实现这一点;然而,由于数据集的长度,变量的数量,以及我试图做的不同滚动和的数量(2天,3天,4天等)。我想知道是否有人有更多的时间,更有效的方式来完成这项任务在DPLYR。
我的数据与此类似:
Subjects <- c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3)
Day <- c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
variable.A <- rnorm(n = Day, mean = 20, sd = 5)
variable.B <- rnorm(n = Day, mean = 50, sd = 15)
variable.C <- rnorm(n = Day, mean = 100, sd = 33)
dat <- data.frame(Subjects, Day, variable.A, variable.B, variable.C)
dat
Subjects Day variable.A variable.B variable.C
1 1 1 20.17676 72.44022 56.69915
2 1 2 14.11462 46.28473 117.00864
3 1 3 15.30440 72.43752 93.17489
4 1 4 13.72422 66.76744 101.26422
5 1 5 21.97695 69.50480 102.61979
6 2 1 14.45742 32.69106 82.37268
7 2 2 33.37783 65.06782 97.17744
8 2 3 13.57833 26.37183 89.38218
9 2 4 23.01717 55.83446 147.85362
10 2 5 14.06008 32.00396 48.73060
11 3 1 14.57199 60.29746 87.07977
12 3 2 15.77413 77.04517 132.17910
13 3 3 30.05661 30.62220 171.35998
14 3 4 24.65348 53.96450 74.99875
15 3 5 26.93699 57.06393 36.81901
library(plyr)
library(RcppRoll)
summarize <- ddply(dat, "Subjects", mutate,
Two.Day.Roll.A = roll_sum(variable.A, 2, align = "right", fill = NA),
Two.Day.Roll.B = roll_sum(variable.B, 2, align = "right", fill = NA),
Two.Day.Roll.C = roll_sum(variable.C, 2, align = "right", fill = NA))
Subjects Day variable.A variable.B variable.C Two.Day.Roll.A Two.Day.Roll.B Two.Day.Roll.C
1 1 1 15.324798 24.83074 137.48853 NA NA NA
2 1 2 12.112943 58.86094 86.87454 27.43774 83.69168 224.3631
3 1 3 16.179328 57.95450 68.71333 28.29227 116.81544 155.5879
4 1 4 15.319750 38.13721 79.43194 31.49908 96.09171 148.1453
5 1 5 21.791452 61.99368 134.30205 37.11120 100.13089 213.7340
6 2 1 10.937461 63.83164 95.04865 NA NA NA
7 2 2 14.642376 79.12452 107.13699 25.57984 142.95616 202.1856
8 2 3 17.519905 52.75490 100.62811 32.16228 131.87942 207.7651
9 2 4 23.190371 37.56950 179.72763 40.71028 90.32440 280.3557
10 2 5 13.729350 46.95616 72.14179 36.91972 84.52566 251.8694
11 3 1 9.609171 74.51140 130.90005 NA NA NA
12 3 2 27.542897 14.36222 133.87630 37.15207 88.87363 264.7763
13 3 3 18.750015 60.46183 130.44314 46.29291 74.82405 264.3194
14 3 4 17.461882 52.65797 176.30620 36.21190 113.11979 306.7493
15 3 5 31.244564 62.41614 78.82916 48.70645 115.07411 255.1354
谢谢你。
以下是DPLYR
版本:
library(dplyr)
library(RcppRoll)
dat %>% group_by(Subjects) %>%
mutate_each(funs(roll_sum(., 2, align = "right", fill=NA)), -Subjects, -Day)
我试图计算许多列的行平均值。有人能解释一下为什么下面的代码只计算代码中两个变量(var_1和var_13)的平均值,而不是所有13列的平均值吗?
我有一个名称重复的数据集。如果名称重复,我想创建一个值为1(TRUE)或0(FALSE)的新列。 这是我使用的代码: 或者 然而,我得到了上面可以看到的错误。 另一个想法是使用group_by,然后计算计数。喜欢: 但是,它不能返回原始数据帧后group_by
我正在尝试使用创建一个新列,该列的值基于特定的列。 最后一个数据帧示例(我正在尝试创建): 这个问题基本上与此相反:dplyr-mutate:使用动态变量名。我不能使解决方案适应我的问题。
我有一个带有分组变量的数据帧,我想按组对它们求和。使用很容易。 但是现在我想要一个新的列,按组计算n1和n2的总和。这样地: 我如何使用dplyr? 编辑:实际上,这只是一个例子,我有很多变量。 我试过这两个代码,但它不在正确的维度上......
我想使用在数据帧中创建多个新列。列名及其内容应动态生成。 来自IRIS的示例数据: 我创建了一个函数来从变量中更改新列: