【发布时间】:2013-03-24 10:15:57
【问题描述】:
我想从数据框中删除一行并对结果列求和。我知道我要根据其内容删除的行,但不知道它的行号。下面我介绍三个示例,其中两个有效。仅当要删除第一行时,使用- 删除行才有效。这是为什么?
我的问题与此类似:How to delete the first row of a dataframe in R? 但是,该行根据其行号被删除。
# This works.
state = 'OH'
my.data = read.table(text = "
county y1990 y2000
cc NA 2
OH NA 10
bb NA 1
", sep = "", header = TRUE, na.strings = "NA", stringsAsFactors = FALSE)
my.colsums2 <- colSums(my.data[!(my.data$county == state), 2:ncol(my.data)], na.rm=TRUE)
my.colsums2
# y1990 y2000
# 0 3
# This works.
my.data = read.table(text = "
county y1990 y2000
OH NA 10
cc NA 2
bb NA 1
", sep = "", header = TRUE, na.strings = "NA", stringsAsFactors = FALSE)
my.colsums2 <- colSums(my.data[-(my.data$county == state), 2:ncol(my.data)], na.rm=TRUE)
my.colsums2
# y1990 y2000
# 0 3
# This does not work.
my.data = read.table(text = "
county y1990 y2000
cc NA 2
OH NA 10
bb NA 1
", sep = "", header = TRUE, na.strings = "NA", stringsAsFactors = FALSE)
my.colsums2 <- colSums(my.data[-(my.data$county == state), 2:ncol(my.data)], na.rm=TRUE)
my.colsums2
# y1990 y2000
# 0 11
我想我仍然对! 和- 之间的区别感到困惑。谢谢你的建议。
【问题讨论】:
-
我想这就是你要找的东西:
colSums(my.data[my.data$county != "OH", -1], na.rm = TRUE) -
其实最后两个例子是错误的,中间一个是靠运气。布尔变量的否定是通过
!获得的,而不是-。
标签: r