我正在处理从csv文件提取的数据帧,并尝试创建一行,该行是许多其他行的总和。
我尝试使用colSums,numcolwise和许多其他函数,但是我不断遇到各种错误。使用colSums时,出现错误消息,因为我的数据框不是数字,所以无法使用colSums函数。
所以
答案 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