根据 r 中的行和将行值更改为 0
change row value to 0 based on rowsums in r
这是我的数据框:
ID A B C D E F
1 0 1 3 5 4 2
2 0 0 0 0 1 0
3 1 2 3 4 4 2
4 0 0 1 1 0 0
我想根据行总和得到一个新的数据框,如果行总和<10,这一行的所有值都变为0,应该是这样的:
ID A B C D E F
1 0 1 3 5 4 2
2 0 0 0 0 0 0
3 1 2 3 4 4 2
4 0 0 0 0 0 0
有什么简单的方法吗?
您可以将 rowSums
用作 :
df[rowSums(df[-1], na.rm = TRUE) < 10, -1] <- 0
df
# ID A B C D E F
#1 1 0 1 3 5 4 2
#2 2 0 0 0 0 0 0
#3 3 1 2 3 4 4 2
#4 4 0 0 0 0 0 0
-1
是忽略计算行和的数据中的第ID
列,并用0代替。
数据
df <- structure(list(ID = 1:4, A = c(0L, 0L, 1L, 0L), B = c(1L, 0L,
2L, 0L), C = c(3L, 0L, 3L, 1L), D = c(5L, 0L, 4L, 1L), E = c(4L,
1L, 4L, 0L), F = c(2L, 0L, 2L, 0L)),class = "data.frame", row.names = c(NA, -4L))
这是我的数据框:
ID A B C D E F
1 0 1 3 5 4 2
2 0 0 0 0 1 0
3 1 2 3 4 4 2
4 0 0 1 1 0 0
我想根据行总和得到一个新的数据框,如果行总和<10,这一行的所有值都变为0,应该是这样的:
ID A B C D E F
1 0 1 3 5 4 2
2 0 0 0 0 0 0
3 1 2 3 4 4 2
4 0 0 0 0 0 0
有什么简单的方法吗?
您可以将 rowSums
用作 :
df[rowSums(df[-1], na.rm = TRUE) < 10, -1] <- 0
df
# ID A B C D E F
#1 1 0 1 3 5 4 2
#2 2 0 0 0 0 0 0
#3 3 1 2 3 4 4 2
#4 4 0 0 0 0 0 0
-1
是忽略计算行和的数据中的第ID
列,并用0代替。
数据
df <- structure(list(ID = 1:4, A = c(0L, 0L, 1L, 0L), B = c(1L, 0L,
2L, 0L), C = c(3L, 0L, 3L, 1L), D = c(5L, 0L, 4L, 1L), E = c(4L,
1L, 4L, 0L), F = c(2L, 0L, 2L, 0L)),class = "data.frame", row.names = c(NA, -4L))