r - Frequencies data table multiple columns -
i have data table this
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"))
i want count frequencies all columns. know how 1 one, want in 1 instruction because data has lot of columns.
result must one:
dt[,a1:=.n, = c("a")] dt[,a2:=.n, = c("b")] dt[,a3:=.n, = 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 # b c #1: a d #2: 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]] # x #1: 2 #2: 2 #3: b 3 #4: b 3 #5: b 3 #[[2]] # b x #1: 2 #2: 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 concatenating "_count" colnames(df)[seq(2,length(colnames(df)),2)]= paste0(colnames(df)[seq(1,length(colnames(df)),2)],"_count") #df # a_count b b_count c c_count #1 2 2 d 2 #2 2 2 d 2 #3 b 3 c 2 b 3 #4 b 3 c 2 b 3 #5 b 3 e 1 b 3
Comments
Post a Comment