我需要使用类别变量创建一个新的变量,该变量采用每个类别的频率。我编写了以下代码:
df[ , t_Product := .N , by = .(Product)]
但是我有这个错误:
Error in `[.data.frame`(datos, , `:=`(t_Product, .N), by = .(Product)) :
unused argument (by = .(Product))
df
我的数据框在哪里,t_Product
是新列的名称,Product
也是当前列。
如果我是对的话,我将按该列分组Product
并创建另一个名为t_Product
count的列,因此需要频率...
您的数据data.table
格式吗?并非如此,只是为了使您知道将来如何测试,请运行以下代码行:
is.data.table(df)
它应该输出 FALSE
为了解决这个问题,在代码之前添加以下内容:
library(data.table) #import data.table package
df = as.data.table(df) #convert df to data.table
df[, t_Product := .N , by = .(Product)] #your code
要么
library(data.table)
setDT(df)
df[, t_Product := .N , by = .(Product)]
帕尔默企鹅的例子
library(data.table)
library(palmerpenguins)
data(package = 'palmerpenguins') #importing the palmer penguins data
df = as.data.table(penguins) #you can also use setDT(df)
df[, t_Product := .N , by = .(species)] #using your code here
df[, .(species, island, t_Product)] #selecting columns using column name
#> species island t_Product
#> 1: Adelie Torgersen 152
#> 2: Adelie Torgersen 152
#> 3: Adelie Torgersen 152
#> 4: Adelie Torgersen 152
#> 5: Adelie Torgersen 152
#> ---
#> 340: Chinstrap Dream 68
#> 341: Chinstrap Dream 68
#> 342: Chinstrap Dream 68
#> 343: Chinstrap Dream 68
#> 344: Chinstrap Dream 68
由reprex软件包(v0.3.0)创建于2020-08-10
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句