簡體   English   中英

計算值並將其添加到數據框

[英]Calculate and add values to a data-frame

我的數據集如下所示:

"userid","progress"
1, incomplete
2, complete
3, not attempted
4, incomplete
5, not attempted
6, complete
7, complete
8, complete
9, complete
10, incomplete

我想制作一個餅狀圖,顯示狀態已完成,未完成和未嘗試過的人數所占的百分比,即total no of users/user id = complete/incomplete

該代碼不起作用。

var1 = nrow(data1)/sum(data1$progress=="complete")
var2 = nrow(data1)/sum(data1$progress=="incomplete")

  df <- data.frame(
    val = c (var1, var2)

  )

  hchart(df, "pie")%>%hc_add_series_labels_values(values = df)

如果要制作餅圖,大多數方法將為您完成很多工作。 無需顯式計算百分比。 無論如何, table的輸出正是您想要的pie

# Load your data
ds <- read.csv(header = TRUE, text = 
"userid,progress
1, incomplete
2, complete
3, not attempted
4, incomplete
5, not attempted
6, complete
7, complete
8, complete
9, complete
10, incomplete")

# Tabularize
tab <- table(ds$progress)
pie(tab) # Make piechart

在此處輸入圖片說明

如下所示, table對每個級別的出現次數進行計數,並返回一個命名的integer向量。 這里的pie()pie()根據相對頻率計算角度/面積,並使用名稱來標記圖表。

print(tab)
#
#      complete     incomplete  not attempted 
#             5              3              2 

如果您堅持要自己計算百分比,則可以使用tab/sum(tab)

編輯:我看到您嘗試使用highcharter包。 在這種情況下為什么不使用hcpie 該函數將一個因素作為輸入:

library("highcharter")
hcpie(ds$progress)

在此處輸入圖片說明

像這樣:

userid <- c(1,2,3,4,5,6,7,8,9,10)
progress <- c("incomplete","complete", "not attempted", "incomplete", "not attempted", "complete","complete","complete", "complete","incomplete")
df <- data.frame("userid"=userid, "progress"=progress)
df$progress <- as.factor(df$progress)
var1 = nrow(df[which(df$progress=="complete"), ])/nrow(df)
var2 = nrow(df[which(df$progress=="incomplete"), ])/nrow(df) 
var3 = nrow(df[which(df$progress=="not attempted"), ])/nrow(df) 
data <- c(var1, var2, var3)
pie(data, labels=c("complete","incomplete", "not attempted"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM