Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.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 - Fatal编程技术网

R 按百分比提取频率

R 按百分比提取频率,r,R,下面是一些以数字表示的数据帧 data.frame(class = ("a","b","a","b"), date = c(2009,2009,2010,2010), volume=c(1,1,2,0)) 如何将“体积”列转换为不同标签的同一年日期的百分比 data.frame(class = ("a","b","a","b"), date = c(2009,2009,2010,2010), volumepercentage=c("50.00%","50.00%","100.00%","9.0

下面是一些以数字表示的数据帧

data.frame(class = ("a","b","a","b"), date = c(2009,2009,2010,2010), volume=c(1,1,2,0))
如何将“体积”列转换为不同标签的同一年日期的百分比

data.frame(class = ("a","b","a","b"), date = c(2009,2009,2010,2010), volumepercentage=c("50.00%","50.00%","100.00%","9.00%"))

下面是一个基本的R方法:

df1.spl <- split(df1, df1$date)
df1.lst <- lapply(df1.spl, function(x) data.frame(x, pct=prop.table(x$volume)*100))
df2 <- do.call(rbind, df1.lst)
df2
#        class date volume pct
# 2009.1     a 2009      1  50
# 2009.2     b 2009      1  50
# 2010.3     a 2010      2 100
# 2010.4     b 2010      0   0

请注意行名称中的更改。命令rownamesdf2您是否需要df1%>%groupbydate%>%mutateEvolumNepercentage=100*volume/sumVolume最后一行的9%不清楚请显示您尝试了什么,因为这并不完全清楚,您做了什么研究,因为我想还有许多其他SO帖子至少应该有所帮助