Я пытаюсь перебрать несколько столбцов данных и обновить строки в одном столбце на основе строк в другом.
library(tidyverse)
df <- tibble("A" = c(rnorm(10)), "B" = c (rnorm(10)), "AA" = c(rnorm(10)), "BB" = c(rnorm(10)))
df
# A tibble: 10 x 4
A B AA BB
<dbl> <dbl> <dbl> <dbl>
1 0.278 -1.21 -0.892 -1.07
2 -3.39 -0.0315 0.418 0.514
3 -2.37 -0.374 0.504 -1.14
4 -0.642 0.590 1.24 -0.186
5 1.48 -0.888 -0.610 -0.454
6 -2.06 1.43 -0.197 -1.19
7 0.314 0.628 -1.36 -1.73
8 -0.122 -0.480 1.62 2.47
9 -0.0693 1.20 -0.498 -0.858
10 0.751 -0.389 -0.340 0.743
Я хочу установить для столбца A значение NA, если столбец AA равен <0То же самое для столбцов B, BB и т. Д. И т. Д. </p>
У меня есть оператор ifelse, который работает для одного столбца за раз, но мне нужно поместить его в цикл или функцию map () в purrrцикл по всем столбцам подряд.Но каждый раз, когда я пытаюсь поместить его в цикл for или использую map_dbl (), я получаю ошибки.Вот мое рабочее заявление ifelse.
df <- mutate(df, A = ifelse(AA < 0, NA, A))
Вот как я пытался сделать цикл:
Вот как я пытался это сделать.Я новичок в R, так что я могу быть полностью отключен.
cleaning <- function(df,x,y,z) {df <- mutate(df, df$x == ifelse(df$y < 2, NA, df$z))
for (i in seq_along(x)) {df[i] <-cleaning[[i]]}
}
cleaning(df,A:B,AA:BB,A:B)
Вот данные первых 10 строк моих фактических данных.Столбцы AF3: AF4 необходимо обновить на основе CQ_AF3: CQ_AF4, имеющей значение <2. </p>
structure(list(ID = c(74L, 11L, 66L, 125L, 89L, 25L, 57L, 43L,
114L, 47L), COUNTER = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L
), INTERPOLATED = c(4518.461428, 4573.333222, 4604.102452, 4655.384502,
4570.256298, 4473.846044, 4610.256298, 4585.128093, 4721.538346,
4653.84604), AF3 = c(3624.615296, 4025.640927, 4034.871696, 4004.615287,
3971.281954, 3868.717854, 3968.205031, 4005.128107, 3898.974264,
4058.461439), F7 = c(4345.128099, 4644.615271, 4665.128091, 4525.640915,
4571.281939, 4804.615267, 4479.48707, 4614.358862, 4482.563993,
4708.205013), F3 = c(3757.948626, 3978.974262, 4057.435798, 4118.974258,
4061.538362, 3591.794784, 4060.512721, 4019.999902, 4203.589641,
4068.717849), FC5 = c(4107.179387, 4126.153745, 4058.97426, 4085.640926,
4098.461438, 4245.128101, 4094.358874, 4133.333232, 3742.051191,
4152.307591), T7 = c(4316.410151, 4824.102446, 4765.128089, 4783.076806,
4685.640911, 4422.051174, 4742.051166, 4710.769116, 4850.256292,
4734.358859), P7 = c(4747.179371, 4458.97425, 4423.589635, 4497.948608,
4578.974247, 4752.307576, 4418.46143, 4599.999888, 4713.333218,
4579.487068), O1 = c(3947.179391, 3908.205033, 3966.66657, 4042.051183,
4008.20503, 4006.153748, 3972.820416, 3984.615287, 4167.692206,
3996.410159), O2 = c(4077.435798, 4171.281949, 4094.358874, 4147.179386,
4121.538361, 4138.461437, 4137.948617, 4151.79477, 4134.358873,
4118.974258), P8 = c(3606.666578, 3820.512727, 3874.35888, 4060.512721,
3775.897344, 3631.794783, 3959.999903, 3896.410161, 3858.974265,
3922.051186), T8 = c(4146.666565, 4330.256304, 4353.333227, 4415.384507,
4338.461432, 3941.538365, 4432.307584, 4382.051175, 4587.692196,
4419.999892), FC6 = c(4418.974251, 4632.8204, 4692.307578, 4634.871682,
4568.717837, 4684.61527, 4363.589637, 4615.897323, 4654.358861,
4631.794759), F4 = c(3808.205035, 4205.640923, 4373.846047, 4414.871687,
4293.846049, 3727.692217, 4151.79477, 4218.461435, 4284.61528,
4341.538355), F8 = c(4282.051177, 4243.076819, 4239.999896, 4437.435789,
4340.512714, 3809.743497, 4276.922972, 4269.743485, 4536.922966,
4360.512714), AF4 = c(487L, 484L, 513L, 444L, 444L, 0L, 0L, 0L,
482L, 0L), RAW_CQ = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L),
CQ_AF3 = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), CQ_F7 = c(4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), CQ_F3 = c(4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L), CQ_FC5 = c(4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L), CQ_T7 = c(4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L), CQ_P7 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), CQ_O1 = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), CQ_O2 = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), CQ_P8 = c(4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L), CQ_T8 = c(4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L), CQ_FC6 = c(4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L), CQ_F4 = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L), CQ_F8 = c(4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), CQ_AF4 = c(4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L), CQ_CMS = c(4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L), CQ_DRL = c(1768L, 1770L, 1767L,
1768L, 1768L, 1768L, 1768L, 1771L, 1767L, 1770L), GYROX = c(1515L,
1517L, 1511L, 1512L, 1516L, 1514L, 1514L, 1515L, 1515L, 1515L
), `GYROY MARKER` = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L)), row.names = c(NA, -10L), class = c("tbl_df", "tbl",
"data.frame"))