【发布时间】:2018-01-25 08:16:16
【问题描述】:
library(tidyverse)
我想使用 dplyr、tidyr 和 purrr 以 Tidyverse 语法重写下面的 for 循环代码。
for (i in seq_along(Data3)) {
Data3[[i]]$Count <- as.numeric(Data3[[i]]$Count)
n <- nrow(Data3[[i]])
Data3[[i]]$perc <- Data3[[i]]$Count / Data3[[i]]$Count[n]
}
下面的示例数据:
Loc<-c("Montreal","Toronto","Vancouver","Quebec","Ottawa","Hamilton","Total")
Count<-c("2344","2322","122","45","4544","44","9421")
Data<-data_frame(Loc,Count)
Data2<-data_frame(Loc,Count)
Data3<-list(Data,Data2)
这就是我想要实现的目标:
每个数据框的“Loc”列中都有“Total”以及“Count”列的相应总和。我想通过将“计数”列中的每个值除以总数来计算每个数据帧的百分比,总数是“计数”列中的最后一个数字。
我希望将百分比添加为每个数据框的新列。 对于此示例,总计是列中的最后一个数字,但实际上,它可能混合在列中的任何位置,并且可以通过“Loc”列中相应的“Total”值找到。
我一直在使用 purrr::map,但我不确定如何计算百分比。
Data3%>%map(~mutate(.x,paste0(round(100* (MISSING PERCENTAGE),2),"%"))
【问题讨论】:
-
本网站不适用于“编写我的代码”问题。您已经尝试了哪些方法,哪些方法没有奏效,或者您遇到了哪些问题?
-
我添加了一个我想到的代码示例,但我真的坚持百分比计算。我尝试寻找有关此的其他帖子,但找不到任何内容。