小编tko*_*_dk的帖子

创建一个包含 R 中出现次数的列

我正在尝试向现有数据框添加一列,以便该列定义每个用户购买的不同产品的数量。一个玩具示例是

Customer    Product
1           Chocolate
1           Candy
1           Soda
2           Chocolate
2           Chocolate
2           Chocolate
3           Insulin
3           Candy
Run Code Online (Sandbox Code Playgroud)

输出应该在哪里

Customer    Product     #Products
1           Chocolate   3
1           Candy       3
1           Soda        3
2           Chocolate   1
2           Chocolate   1
2           Chocolate   1
3           Insulin     2
3           Candy       2
Run Code Online (Sandbox Code Playgroud)

我想在没有 for 循环的情况下执行此操作,因为我有数百万行,并且这将花费很长时间。我使用了 data.table 和其他方法来获取每个客户的产品数量,但我不知道如何轻松地将其作为列添加到现有数据框中。

提前致谢!

r

5
推荐指数
1
解决办法
1万
查看次数

在R中查找没有循环的值

我需要根据另一个数据框中的多个条件在数据框中查找值.例

A=
Country Year Number
USA     1994 455
Canada  1997 342
Canada  1998 987
Run Code Online (Sandbox Code Playgroud)

必须添加一个名为"rate"的列

B=
Year   USA   Canada
1993   21    654
1994   41    321
1995   56    789
1996   85    123
1997   65    456
1998   1     999
Run Code Online (Sandbox Code Playgroud)

这样最终的数据框就是

C=
Country Year Number  Rate
USA     1994 455     41
Canada  1997 342     456
Canada  1998 987     999
Run Code Online (Sandbox Code Playgroud)

换句话说:从B中的A中查找年份和国家,结果是C.我想在没有循环的情况下执行此操作.我想要一个通用的方法,这样我就可以根据两个以上的标准来查找.

r

2
推荐指数
1
解决办法
92
查看次数

R data.table用于确定某人是新人还是现有人

我有以下data.table

year      Person     Number_of_visits
2012      1          0
2013      1          4
2014      1          0
2015      1          1
2012      2          1
2013      2          5 
...
Run Code Online (Sandbox Code Playgroud)

我想确定每个人,他们的第一次访问是哪一年.所以期望的输出是:

year      Person     Number_of_visits    New?
2012      1          0                   NA
2013      1          4                   Yes
2014      1          0                   No
2015      1          1                   No
2012      2          1                   NA
2013      2          5                   No
Run Code Online (Sandbox Code Playgroud)

我想也许可以在data.table中使用SHIFT函数,但我无法弄清楚如何这样做.一旦一个人访问过,他/她就不再是新人了,即使可能有一年之后没有访问.如果第一次访问发生在2012年,则应该有NA或类似条目.

我用过

test <- DT[ , NEW := c(0, (2:1)[(Number_of_visits== shift(Number_of_visits)) + 1][-1]), by = Person]
Run Code Online (Sandbox Code Playgroud)

但这自然给了我所有的变化,我想只注册从0到0以上的某个值(访问次数)的第一个变化

r data.table

1
推荐指数
1
解决办法
54
查看次数

标签 统计

r ×3

data.table ×1