Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 频率数据表多列_R_Data.table_Multiple Columns_Frequency - Fatal编程技术网

R 频率数据表多列

R 频率数据表多列,r,data.table,multiple-columns,frequency,R,Data.table,Multiple Columns,Frequency,我有一个这样的数据表 require(data.table) dt <- data.table(a= c("a","a","b","b","b"), b= c("a","a","c","c","e"), c=c("d","d","b","b","b")) 使用for循环。@RichScriven你能给我举个例子吗。如果你消除x:=.N,然后只做:l=lapplyseq\u alongcolnamesdt,functioni dt[,evalcolnamesdt[i],with=F]

我有一个这样的数据表

require(data.table)
dt <- data.table(a= c("a","a","b","b","b"), b= c("a","a","c","c","e"),    c=c("d","d","b","b","b"))

使用for循环。@RichScriven你能给我举个例子吗。如果你消除x:=.N,然后只做:l=lapplyseq\u alongcolnamesdt,functioni dt[,evalcolnamesdt[i],with=F][,.N,by=evalcolnamesdt[i]]的话,试试nm1。解决方案更好。
dt[,a1:=.N, by = c("a")]
dt[,a2:=.N, by = c("b")]
dt[,a3:=.N, by = c("c")]  
require(data.table)
dt <- data.table(a= c("a","a","b","b","b"), 
                 b= c("a","a","c","c","e"),   
                 c=c("d","d","b","b","b"))
#dt
#   a b c
#1: a a d
#2: a a d
#3: b c b
#4: b c b
#5: b e b

l=lapply(seq_along(colnames(dt)), 
         function(i) dt[,eval(colnames(dt)[i]),with=F][, x:=.N,by=eval(colnames(dt)[i])])
#l 
#[[1]]
#   a x
#1: a 2
#2: a 2
#3: b 3
#4: b 3
#5: b 3

#[[2]]
#   b x
#1: a 2
#2: a 2
#3: c 2
#4: c 2
#5: e 1

#[[3]]
#   c x
#1: d 2
#2: d 2
#3: b 3
#4: b 3
#5: b 3


df = as.data.frame(l)

# replacing alternate column names with concatenating "_count" to it
colnames(df)[seq(2,length(colnames(df)),2)]=
 paste0(colnames(df)[seq(1,length(colnames(df)),2)],"_count")

#df
#  a a_count b b_count c c_count
#1 a       2 a       2 d       2
#2 a       2 a       2 d       2
#3 b       3 c       2 b       3
#4 b       3 c       2 b       3
#5 b       3 e       1 b       3