![](/img/trans.png)
[英]R - add row to a data frame that calculates sum of all values in a column
[英]R. How to add sum row in data frame
我知道這個問題非常基礎,但是我在添加額外的行以顯示該行的摘要時遇到了麻煩。
假設我正在使用以下代碼創建一個data.frame:
name <- c("James","Kyle","Chris","Mike")
nationality <- c("American","British","American","Japanese")
income <- c(5000,4000,4500,3000)
x <- data.frame(name,nationality,income)
上面的代碼創建下面的data.frame:
name nationality income
1 James American 5000
2 Kyle British 4000
3 Chris American 4500
4 Mike Japanese 3000
我想做的是添加第5行 ,其中包含: name =“ total”,國籍=“ NA”,age =所有行的總數。 我想要的輸出如下所示:
name nationality income
1 James American 5000
2 Kyle British 4000
3 Chris American 4500
4 Mike Japanese 3000
5 Total NA 16500
在實際情況下,我的data.frame具有一千多行,因此我需要一種有效的方法來添加總行。
可以請教一下嗎? 非常感謝你!
我們可以使用rbind
rbind(x, data.frame(name='Total', nationality=NA, income = sum(x$income)))
# name nationality income
#1 James American 5000
#2 Kyle British 4000
#3 Chris American 4500
#4 Mike Japanese 3000
#5 Total <NA> 16500
使用索引。
name <- c("James","Kyle","Chris","Mike")
nationality <- c("American","British","American","Japanese")
income <- c(5000,4000,4500,3000)
x <- data.frame(name,nationality,income, stringsAsFactors=FALSE)
x[nrow(x)+1, ] <- c('Total', NA, sum(x$income))
更新:使用list
x[nrow(x)+1, ] <- list('Total', NA, sum(x$income))
x
# name nationality income
# 1 James American 5000
# 2 Kyle British 4000
# 3 Chris American 4500
# 4 Mike Japanese 3000
# 5 Total <NA> 16500
sapply(x, class)
# name nationality income
# "character" "character" "numeric"
如果您希望在帖子中顯示確切的行,則應執行以下操作:
newdata = rbind(x, data.frame(name='Total', nationality='NA', income = sum(x$income)))
盡管我同意Jaap的觀點,但您可能不希望將此行添加到末尾。 萬一您需要加載數據並將其用於其他分析,這將增加不必要的麻煩。 但是,您還可以使用以下代碼在進行其他分析之前刪除添加的行:
newdata = newdata[-newdata$name=='Total',]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.