使用与此类似的数据框:
set.seed(100)
df <- data.frame(cat = c(rep("aaa", 5), rep("bbb", 5), rep("ccc", 5)), val = runif(15))
df <- df[order(df$cat, df$val), ]
df
cat val
1 aaa 0.05638315
2 aaa 0.25767250
3 aaa 0.30776611
4 aaa 0.46854928
5 aaa 0.55232243
6 bbb 0.17026205
7 bbb 0.37032054
8 bbb 0.48377074
9 bbb 0.54655860
10 bbb 0.81240262
11 ccc 0.28035384
12 ccc 0.39848790
13 ccc 0.62499648
14 ccc 0.76255108
15 ccc 0.88216552
Run Code Online (Sandbox Code Playgroud)
我想在每个组中添加一个带编号的列.这样做显然不是使用R的权力:
df$num <- 1
for (i in 2:(length(df[,1]))) {
if (df[i,"cat"]==df[(i-1),"cat"]) { …Run Code Online (Sandbox Code Playgroud) 注意:此问题的标题已经过编辑,使其成为plyr功能掩盖其dplyr对应项时的问题的规范问题.问题的其余部分保持不变.
假设我有以下数据:
dfx <- data.frame(
group = c(rep('A', 8), rep('B', 15), rep('C', 6)),
sex = sample(c("M", "F"), size = 29, replace = TRUE),
age = runif(n = 29, min = 18, max = 54)
)
Run Code Online (Sandbox Code Playgroud)
有了旧的,plyr我可以使用以下代码创建一个总结我的数据的小表:
require(plyr)
ddply(dfx, .(group, sex), summarize,
mean = round(mean(age), 2),
sd = round(sd(age), 2))
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样:
group sex mean sd
1 A F 49.68 5.68
2 A M 32.21 6.27
3 B F 31.87 9.80
4 B M 37.54 …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数据集,其中一列可以有四个不同的值:
dataset <- data.frame(out = c("a","b","c","a","d","b","c","a","d","b","c","a"))
Run Code Online (Sandbox Code Playgroud)
在R中,我想创建第二列,按顺序计算包含特定值的累计行数.因此输出列将如下所示:
out
1
1
1
2
1
2
2
3
2
3
3
4
Run Code Online (Sandbox Code Playgroud) 我试图使用dplyr在数据框中扩展corr列,但row_number继续失败
> o<- out %>% group_by(site) %>% mutate(row = paste0("corr", row_number()))
Error in rank(x, ties.method = "first", na.last = "keep") :
argument "x" is missing, with no default
>dput(out)
structure(list(site = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("2001", "2002",
"2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010",
"2011", "2012", "2013", "2014", "2015", "2016", "2017", "2020",
"2021", "2022", "2102", "2107", "2108"), class = "factor"), corr = c(1,
0.96999258460714, 0.940002658241897, …Run Code Online (Sandbox Code Playgroud)