r - 如何计算 R 中的频率(计数)变量?

标签 r function machine-learning

我已经开始逐渐从 Excel 转向 R,但在(相对简单的)计算方面我仍然遇到一些困难。

我想创建变量x的频率版本,我们将其命名为“xFrequency”

请查看下面我的数据示例。

所需的变量 x 频率基本上应该计算特定时期(国家年)内 x 的数量。在样本数据中,观察期为1990年至1995年。因此,1994年加拿大总共收到了4个x。

也许有一个相关的函数?谢谢!

country year    x   xfrequency
CAN     1990    1   1
CAN     1991    0   0
CAN     1992    1   2
CAN     1993    0   0
CAN     1994    2   4
CAN     1995    1   5
USA     1990    0   0
USA     1991    2   2
USA     1992    1   3
USA     1993    0   0
USA     1994    1   4
USA     1995    0   0
GER     1990    NA  NA
GER     1991    1   1
GER     1992    0   0
GER     1993    1   2
GER     1994    2   4
GER     1995    1   5

最佳答案

示例 data.table 假设您的数据集位于名为 data 的变量中:

library(data.table)
setDT(data)
data[is.na(x),x := 0] # Remove the NA as a sum of anything with NA is NA
data[, xfreq := cumsum(x), by=country]

这给出:

    country year x xfrequency xfreq
 1:     CAN 1990 1          1     1
 2:     CAN 1991 0          0     1
 3:     CAN 1992 1          2     2
 4:     CAN 1993 0          0     2
 5:     CAN 1994 2          4     4
 6:     CAN 1995 1          5     5
 7:     USA 1990 0          0     0
 8:     USA 1991 2          2     2
 9:     USA 1992 1          3     3
10:     USA 1993 0          0     3
11:     USA 1994 1          4     4
12:     USA 1995 0          0     4
13:     GER 1990 0         NA     0
14:     GER 1991 1          1     1
15:     GER 1992 0          0     1
16:     GER 1993 1          2     2
17:     GER 1994 2          4     4
18:     GER 1995 1          5     5

这并不完全是您预期的输出,但根据您给出的描述,xfreq 列似乎就是您正在寻找的内容。

为了获得准确的输出,我们可以在 x 为 0 时将 xfreq 重置为 0:

> data[x==0,xfreq := 0]
> data
    country year x xfrequency xfreq
 1:     CAN 1990 1          1     1
 2:     CAN 1991 0          0     0
 3:     CAN 1992 1          2     2
 4:     CAN 1993 0          0     0
 5:     CAN 1994 2          4     4

或者通过一次测试:

data[, xfreq := ifelse(x==0,0L,cumsum(x)), by=country]

关于r - 如何计算 R 中的频率(计数)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35451318/

相关文章:

R Studio 更改 pandoc .tex 模板

r - 同步 sliderInput 和 textInput

r - 加权平均符号 - 在 R 中调整权重

python - 使用 keras 的卷积网络中的自定义过滤器

r - sink() 同时在控制台中显示输出

python - 查找函数的最小值和最大值

javascript - 如何继续 'if' 语句来比较多个函数返回值作为参数?

c - 为什么在 C 中不强制声明具有 int 返回类型的函数?

machine-learning - 训练SVM的参数有哪些

python - doc2vec 如何聚类 DocvecsArray