2016-07-08 23 views
0

Ich habe Datenlapply in lapply in data.table

Score <- c(9.6 ,7.8,6.9,9.6,NA,NA,9.3,9.3,11.1,6.7,5.9,10.4,12.2,6.5,10.1,8.5,7.0,11.2,0.6,8.0) 
CNTRL <- c(rep(12,4), rep(14,4), rep(16,4), rep(18,4), rep(20,2), rep(22,2)) 
SERV <- c(rep(10, 5), rep(15,2), rep(20,13)) 
LOS <- c(rep(1,5), rep(0,15)) 
RESP <- c(rep(0,10), rep(1,10)) 
DataAnalysis <- data.table(Score, CNTRL, SERV, LOS, RESP) 
DataAnalysis <- DataAnalysis[, lapply(.SD, as.character), by = Score] 

Wenn ich von CNTRL bedeuten und sd von Score finden

DataAnalysis[,list (mean = mean(Score, na.rm = TRUE),sd = sd(Score, na.rm = TRUE)), by = CNTRL] 

Wie ich eine Liste für alle Variablen auf einmal CNTRL gelten, SERV, LOS, RESP, so dass es eine Liste von vier Variablen gibt

lapply(names(DataAnalysis)[-1], function(x) x[,list (mean = mean(Score, na.rm = TRUE),sd = sd(Score, na.rm = TRUE))],by = names(DataAnalysis)[-1]) 

ich habe etwas falsch gemacht, konnte ich es nicht richtig machen.

Dieses Ergebnis

[[1]] 
    CNTRL Score.mean Score.sd 
1: 12  8.475 1.350000 
2: 14  9.300 0.000000 
3: 16  8.525 2.605603 
4: 18  9.325 2.417126 
5: 20  9.100 2.969848 
6: 22  4.300 5.232590 

[[2]] 
    SERV Score.mean Score.sd 
1: 10 8.475000 1.350000 
2: 15 9.300000  NA 
3: 20 8.269231 3.065503 

[[3]] 
    LOS Score.mean Score.sd 
1: 0 8.342857 2.958096 
2: 1 8.475000 1.350000 

[[4]] 
    RESP Score.mean Score.sd 
1: 0  8.7875 1.516045 
2: 1  8.0400 3.345046 

Antwort

4

Corrected Code

lapply(names(DataAnalysis)[-1], function(x) DataAnalysis[,list (mean = mean(Score, na.rm = TRUE),sd = sd(Score, na.rm = TRUE)),by = x]) 
+0

Dank, die erste habe ich ändern DataAnalysis, dann ändern, weiterhin tun, tun über, kann nicht ist firgure – BIN

Verwandte Themen