У меня есть кадр данных, как показано нижеКак удалить строку на основе элементарной ситуации?
V1 V2 V3 V4 V5
ATP1A2 ATP1A1 220948_s_at LARS2 204016_at
CAPRIN1 ATP1A2 LARS2
ATP1A1 ATP1A2 203296_s_at MTHFD1 202309_at
CBX3 ATP1B1 201243_s_at PRKCSH 200707_at
AUP1 ATP1B1 PRKCSH 214080_x_at
LARS2 AUP1 220525_s_at PRKCSH
MTHFD1 AUP1 VDAC2 211662_s_at
VDAC2 B3GNT3 204856_at VDAC2
PRKCSH B3GNT3
ATP1B1 CAPRIN1 200722_s_at
B3GNT3 CAPRIN1 200723_s_at
CAPRIN1
CBX3 200037_s_at
Я хочу, чтобы удалить эти элементы из V2, что V3 является пустым или из V4, что V5 является пустым, например, в V3, второй элемент пуст, так как второй элемент V3 и V2 следует удалить. как будет выглядеть результат, будет показано ниже.
V1 V2 V3 V4 V5
ATP1A2 ATP1A1 220948_s_at LARS2 204016_at
CAPRIN1 ATP1A2 203296_s_at MTHFD1 202309_at
ATP1A1 ATP1B1 201243_s_at PRKCSH 200707_at
CBX3 AUP1 220525_s_at PRKCSH 214080_x_at
AUP1 B3GNT3 204856_at VDAC2 211662_s_at
LARS2 CAPRIN1 200722_s_at
MTHFD1 CAPRIN1 200723_s_at
VDAC2 CBX3 200037_s_at
PRKCSH
ATP1B1
B3GNT3
я могу обнаружить, как найти эти пустые строки в каждом столбце, но проблема заключается в том, чтобы удалить две колонки строки на основе этого и сделать это для всех фрейма данных
# to find the empty elements
Rcolumn3 <-which(df$V3=="")
Rcolumn5 <-which(df$V5=="")
df<- structure(list(V1 = structure(c(3L, 7L, 2L, 8L, 5L, 9L, 10L,
12L, 11L, 4L, 6L, 1L, 1L), .Label = c("", "ATP1A1", "ATP1A2",
"ATP1B1", "AUP1", "B3GNT3", "CAPRIN1", "CBX3", "LARS2", "MTHFD1",
"PRKCSH", "VDAC2"), class = "factor"), V2 = structure(c(1L, 2L,
2L, 3L, 3L, 4L, 4L, 5L, 5L, 6L, 6L, 6L, 7L), .Label = c("ATP1A1",
"ATP1A2", "ATP1B1", "AUP1", "B3GNT3", "CAPRIN1", "CBX3"), class = "factor"),
V3 = structure(c(9L, 1L, 6L, 5L, 1L, 8L, 1L, 7L, 1L, 3L,
4L, 1L, 2L), .Label = c("", "200037_s_at", "200722_s_at",
"200723_s_at", "201243_s_at", "203296_s_at", "204856_at",
"220525_s_at", "220948_s_at"), class = "factor"), V4 = structure(c(2L,
2L, 3L, 4L, 4L, 4L, 5L, 5L, 1L, 1L, 1L, 1L, 1L), .Label = c("",
"LARS2", "MTHFD1", "PRKCSH", "VDAC2"), class = "factor"),
V5 = structure(c(4L, 1L, 3L, 2L, 6L, 1L, 5L, 1L, 1L, 1L,
1L, 1L, 1L), .Label = c("", "200707_at", "202309_at", "204016_at",
"211662_s_at", "214080_x_at"), class = "factor")), .Names = c("V1",
"V2", "V3", "V4", "V5"), class = "data.frame", row.names = c(NA,
-13L))
вы можете получить данные по
Вы можете попробовать 'DF [, 2: 3] <- rbind (DF [-Rcolumn3,2: 3], data.frame (V2 = Rep ('', длина (Rcolumn3)), V3 = rep ('', length (Rcolumn3))); df [, 4: 5] <- rbind (df [-Rcolumn5,4: 5], data.frame (V4 = rep ('', length (Rcolumn5)), V5 = rep ('', length (Rcolumn5)))); df [rowSums (df! = '')! = 0,] ' – akrun
@akrun спасибо, но если у меня есть 1000 столбцов, которые затем я хочу сделать это в качестве альтернативы , это не удобство для этого, не так ли? –