我已经生成了以下数据框:
random <- data.frame(replicate(10, sample(1:12, 564, replace=TRUE)))
它包含10列和564行。 列中的每个数字都与一天(1-12)相关。 在此数据框中,我添加了一个新列,其中包含“Green”,“Pink”和“Red”字样,没有特定的顺序,并使用现有数据填充所有564行:
random <- fruit$color
这是我想做的事情:
对于每列1-10,创建以下计数表:
Day Green Pink Red
1 # # #
2 # # #
3 # # #
4 # # #
... # # #
12 # # #
因此,我应该能够从这张表中了解第1列第1天果岭的数量。重要的是,来自不同列的颜色计数可以彼此区分。
这是一个有趣的转折!
需要为每种颜色添加第9天和第10天的计数,因此每个表应如下所示:
Day Green Pink Red
1 # # #
2 # # #
3 # # #
4 # # #
5 # # #
6 # # #
7 # # #
8 # # #
9 - 10 # # #
11 # # #
12 # # #
到目前为止,我已尝试使用ddply和强制执行此操作并循环遍历每个列,但我不熟悉循环。这是我到目前为止的博洛尼亚:
for(i in names(random)) {
random_counts <- ddply(random, c('color', i), function(x) c(count=nrow(x)))
random_counts <- cast(random_counts, i ~ color, mean, value='count')
random_counts
}
非常感谢帮助! 感谢
答案 0 :(得分:0)
以下是base
替代方案:
# slightly smaller toy data
random <- data.frame(replicate(2, sample(1:5, 20, replace = TRUE)))
color <- sample(c("Green", "Pink", "Red"), nrow(random), replace = TRUE)
# use cut to put e.g. 3 and 4 in the same interval
random[] <- lapply(random, function(x) cut(x, breaks = c(0, 1, 2, 4, 5)))
# count
lapply(random, function(x) table(x, color))
# $X1
# color
# x Green Pink Red
# (0,1] 2 0 1
# (1,2] 3 0 2
# (2,4] 3 4 2
# (4,5] 1 1 1
#
# $X2
# color
# x Green Pink Red
# (0,1] 3 0 1
# (1,2] 4 0 1
# (2,4] 1 3 1
# (4,5] 1 2 3