最后一行包含先前结果的总和
Final row with the sum of the previous results
我想生成一个结果,其中还包括最后一行,求出先前结果的总和。我有以下情况。
输入数据:
Group <- c("A","S","A","T","A","S")
Id <- c(25, 34, 28, 52, 3 ,5)
dataframe <- data.frame(Group, Id)
dataframe
当前函数:
result = group_by(dataframe,Group) %>%
summarise(q = n()) %>%
mutate (Freq = round(q / sum(q), 3))
result
当前结果:
Group q Freq
(fctr) (int) (dbl)
1 A 3 0.500
2 S 2 0.333
3 T 1 0.167
想要的结果:
Group q Freq
(fctr) (int) (dbl)
1 A 3 0.500
2 S 2 0.333
3 T 1 0.167
Total 6 1
如何生成总行?
非常感谢。
您在 R 中最接近的可能是这样的:
list(as.data.frame(result),"Total" = colSums(result[,-1]))
如果您想保留在 R 中,那将是首选。如果您需要 table 用于打印目的(pdf,html)等,例如使用 print.table ,你会选择这样的东西:
result <- as.data.frame(result)
result["Total",] <- c(NA,colSums(result[,-1]))
后来替换了NA。然而,这是一种非常肮脏的方法,并且使得它无法用于进一步的计算。
之前也有人问过这个问题,有点像:How do I add a row to a data frame with totals?
我想生成一个结果,其中还包括最后一行,求出先前结果的总和。我有以下情况。
输入数据:
Group <- c("A","S","A","T","A","S")
Id <- c(25, 34, 28, 52, 3 ,5)
dataframe <- data.frame(Group, Id)
dataframe
当前函数:
result = group_by(dataframe,Group) %>%
summarise(q = n()) %>%
mutate (Freq = round(q / sum(q), 3))
result
当前结果:
Group q Freq
(fctr) (int) (dbl)
1 A 3 0.500
2 S 2 0.333
3 T 1 0.167
想要的结果:
Group q Freq
(fctr) (int) (dbl)
1 A 3 0.500
2 S 2 0.333
3 T 1 0.167
Total 6 1
如何生成总行?
非常感谢。
您在 R 中最接近的可能是这样的:
list(as.data.frame(result),"Total" = colSums(result[,-1]))
如果您想保留在 R 中,那将是首选。如果您需要 table 用于打印目的(pdf,html)等,例如使用 print.table ,你会选择这样的东西:
result <- as.data.frame(result)
result["Total",] <- c(NA,colSums(result[,-1]))
后来替换了NA。然而,这是一种非常肮脏的方法,并且使得它无法用于进一步的计算。
之前也有人问过这个问题,有点像:How do I add a row to a data frame with totals?