如何通过比较向量值将条件应用于数据框

时间:2020-05-07 08:59:54

标签: r

我要将条件应用于数据框 x 。该条件基于另一个向量。

如果我的数据框中的分支名称与向量的分支名称匹配。我想做一些数字列 (十月,十一月,十二月,一月)在我的数据框中为零。

enter image description here

输入数据框x:

Oct Nov Dec Jan Branch  Fin-Year    Year    State
143 1   89  147 Chennai F.Y.2019-20 2020    Tamil Nadu
0   1   101 98  Madurai F.Y.2020-21 2021    Tamil Nadu
148 1   206 183 Coimbatore  F.Y.2019-20 2020    Tamil Nadu
0   1   180 140 Theni   F.Y.2020-21 2021    Tamil Nadu

谢谢

1 个答案:

答案 0 :(得分:0)

您可以对列和行进行子集并将值更改为0。

cols <- c('Oct', 'Nov', 'Dec', 'Jan')
x[x$Branch %in% y, cols] <- 0

x
#  Oct Nov Dec Jan     Branch    Fin.Year Year     State
#1   0   0   0   0    Chennai F.Y.2019-20 2020 TamilNadu
#2   0   0   0   0    Madurai F.Y.2020-21 2021 TamilNadu
#3 148   1 206 183 Coimbatore F.Y.2019-20 2020 TamilNadu
#4   0   1 180 140      Theni F.Y.2020-21 2021 TamilNadu

数据

x <- structure(list(Oct = c(143L, 0L, 148L, 0L), Nov = c(1L, 1L, 1L, 
1L), Dec = c(89L, 101L, 206L, 180L), Jan = c(147L, 98L, 183L, 
140L), Branch = c("Chennai", "Madurai", "Coimbatore", "Theni"
), Fin.Year = c("F.Y.2019-20", "F.Y.2020-21", "F.Y.2019-20", 
"F.Y.2020-21"), Year = c(2020L, 2021L, 2020L, 2021L), State = c("TamilNadu", 
"TamilNadu", "TamilNadu", "TamilNadu")), class = "data.frame", 
row.names = c(NA, -4L))
y <- c("Chennai", "Madurai")