如何在数据框中创建一行,该行是R中其他行的总和?

时间:2018-08-18 13:12:31

标签: r dataframe rows plyr

我正在处理从csv文件提取的数据帧,并尝试创建一行,该行是许多其他行的总和。

我尝试使用colSums,numcolwise和许多其他函数,但是我不断遇到各种错误。使用colSums时,出现错误消息,因为我的数据框不是数字,所以无法使用colSums函数。

所以

  1. 如何使数据框中的所有数字值都读为数字?和
  2. 如何创建一个将所有适用行加起来的行?

1 个答案:

答案 0 :(得分:0)

您可以使用is.numeric来标识列数字列并过滤掉非数字变量/列。请参见下面的示例:

df <- data.frame(
  a = letters[1:10],
  b = 1:10,
  c = (1:10) / 100,
  d = (1:10) / 50
)

str(df)
# 'data.frame': 10 obs. of  3 variables:
#  $ a: Factor w/ 10 levels "a","b","c","d",..: 1 2 3 4 5 6 7 8 9 10
#  $ b: int  1 2 3 4 5 6 7 8 9 10
#  $ c: num  0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
#  $ d: num  0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2

df_nums <- df[, sapply(df, is.numeric)]
str(df_nums)
# 'data.frame': 10 obs. of  2 variables:
# $ b: int  1 2 3 4 5 6 7 8 9 10
# $ c: num  0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
# $ d: num  0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2

rowSums(df_nums)
# [1]  1.01  2.02  3.03  4.04  5.05  6.06  7.07  8.08  9.09 10.10