r - 有没有办法根据行在 R 中的值来选择和按比例分配行?

标签 r dataframe categories rows

<分区>

我有一个如下所示的数据框:

   a          b  c   d
1  2005-01-01 0 ... ...
2  2005-02-22 1 ... ...
3  2005-04-02 0 ... ...
4  2005-12-01 3 ... ...
5  2006-03-03 0 ... ...
6  2006-06-08 1 ... ...
7  2006-10-11 0 ... ...
8  2006-12-02 4 ... ...
9  2007-03-24 0 ... ...
10 2007-04-06 2 ... ...
11 2008-01-28 0 ... ...
12 2008-08-19 0 ... ...
13 2008-09-12 0 ... ...
14 2008-12-12 2 ... ...
15 2009-05-27 0 ... ...
16    ...     . ... ...

我想选择 2005 年的所有行并查看其中有多少行是 0、1、2、3 或 4(例如与列 b 结合)。也许与比例?例如,结果将是:

output:
2005
0    1    2    3    4
20%  20%  20%  20%  20%

我试过 table(year(DF$a), c=DF$b) 但这只会产生所有年份的概览,没有比例或类似的东西。我试着用 %>% 将其通过管道传递到比例函数中,但这不起作用。

有人知道怎么做吗?

最佳答案

您可以使用 tableproportions获得每年的份额,在这里你可以给marginproportions , 在这里 1 , 每行做一次。

proportions(table(format(DF$a, "%Y"), DF$b), 1) * 100
#         0   1   2   3   4
#  2005  50  25   0  25   0
#  2006  50  25   0   0  25
#  2007  50   0  50   0   0
#  2008  75   0  25   0   0
#  2009 100   0   0   0   0

数据:

DF <- structure(list(a = structure(c(12784, 12836, 12875, 13118, 13210, 
13307, 13432, 13484, 13596, 13609, 13906, 14110, 14134, 14225, 
14391), class = "Date"), b = c(0L, 1L, 0L, 3L, 0L, 1L, 0L, 4L, 
0L, 2L, 0L, 0L, 0L, 2L, 0L), c = c("...", "...", "...", "...", 
"...", "...", "...", "...", "...", "...", "...", "...", "...", 
"...", "..."), d = c("...", "...", "...", "...", "...", "...", 
"...", "...", "...", "...", "...", "...", "...", "...", "..."
)), row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", 
"10", "11", "12", "13", "14", "15"), class = "data.frame")

关于r - 有没有办法根据行在 R 中的值来选择和按比例分配行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63596626/

相关文章:

r - 如何使用 R 在 GLM 中指定负二项式误差分布?

python - Pandas 数据框列意外乱序

php - 如果产品来自某个类别,则 WooCommerce 执行功能

objective-c - 从具有 objective-c 类别的类扩展协议(protocol)

r - 根据两个预先存在的因素填充缺失数据

php - 获取特定产品的所有父类别

r - 在ggplot中同时绘制水平和垂直点范围

r - 如何在不插值的情况下从不规则点数据制作光栅

r - 如何附加到R中的现有文件而不覆盖它?

python - 根据其他列的条件填充空的 Pandas 列