快速提出这个问题......
Fast replacing values in dataframe in R
如果我想要替换但仅针对我的数据框的某些行,是否有办法将行规范添加到:
df [df<0] =0
将此应用于第40-52行(不起作用):
df[df[40:52,] < 0] = 0
有什么建议吗?非常感谢。
答案 0 :(得分:4)
或者简单地说:
df[40:52,][df[40:52,] < 0] <- 0
这是一个测试:
test = data.frame(A = c(1,2,-1), B = c(4,-8,5), C = c(1,2,3), D = c(7,8,-9))
#> test
# A B C D
#1 1 4 1 7
#2 2 -8 2 8
#3 -1 5 3 -9
要仅为第2行和第3行将负值替换为0,您可以执行以下操作:
test[2:3,][test[2:3,] < 0] <- 0
你得到了
#> test
# A B C D
#1 1 4 1 7
#2 2 0 2 8
#3 0 5 3 0
答案 1 :(得分:2)
这是利用R的回收行为的另一种方式。
df[df < 0 & 1:nrow(df) %in% 40:52] <- 0