簡體   English   中英

從舊數據框的值創建新的百分比數據框?

[英]Create new data frame of percentages from values of an old data frame?

eso

所以我想創建一個新的數據框,添加“有時”和“經常”列的值,然后將其除以總列的值,然后將其乘以 100 以獲得百分比(除非在 R 中存在自動執行此操作的 function)。 我將如何 go 這樣做?

您已在問題中添加了“sql”標簽。 Should you prefer SQL over R for reasons of experience and/or knowledge you might be interested in the fabulous sqldf package which allows you to use SQL syntax within R. 您必須首先通過install.packages("sqldf")下載它,然后您可以像在

expl <-  data.frame(sometimes = c(1, 2, 4),  often = c(2, 2, 2), total =c(6, 9, 8))

library(sqldf)

sqldf("SELECT 100*(sometimes+often)/total FROM expl")

更常用的方法是在同一個 data.frame 中添加一個百分比列,而不是引入一個新的。 這樣,所有數據都保存在一起,並且您不會丟失到例如周列的鏈接。 go 的一種方法是以下單行:

expl <-  data.frame(sometimes = c(1, 2, 4),  often = c(2, 2, 2), total =c(6, 9, 8))
print(expl)
expl$percent = 100 * (expl$sometimes + expl$often)/expl$total
print(expl)

首先,它看起來好像TotalSometimesOften是字符,因為它們中有逗號,所以你需要去掉逗號並將它們轉換為數字。 你可以這樣做(假設你的 dataframe 被稱為mydata ):

for(i in c("Total","Sometimes","Often")) mydata[[i]] = as.numeric(gsub(",", "", mydata[[i]])

然后你可以使用伯納德的答案:

mydata$percent = 100 * (mydata$Sometimes + mydata$Often)/mydata$Total

使用tidyverse的另一個選項:

library(tidyverse) 
newdataframe <- olddataframe %>%
                mutate(percent = (Sometimes+Often)/Total*100) %>%
                select(percent)

但如前所述,最好將百分比列與其他數據一起保留。 在這種情況下,刪除%>% select(percent)

暫無
暫無

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

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