我想从数据框中删除一行并对结果列求和.我根据其内容知道要删除的行,但不知道它的行号.下面我将介绍三个例子,其中两个有效.使用-删除行仅在第一行要被删除的作品.这是为什么?
我的问题与此类似:如何删除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
Run Code Online (Sandbox Code Playgroud)
我猜我仍然困惑过之间的差异!和-.谢谢你的任何建议.
这应该清除-和之间的区别!,我怀疑你可以从那里拿走它;)
my.data$county == state
# [1] TRUE FALSE FALSE
!(my.data$county == state)
# [1] FALSE TRUE TRUE
-(my.data$county == state)
# [1] -1 0 0
Run Code Online (Sandbox Code Playgroud)
!,否定布尔值,是你应该在这里使用的运算符.