簡體   English   中英

R.如何在數據框中添加求和行

[英]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.

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