Я очень плохо знаком с R и программированием в целом, поэтому моё описание вещей может быть немного неправильным.Я постараюсь быть максимально ясным.У меня есть фрейм данных df.train
, который содержит сотни уровней факторов с запутанными записями, которые могут быть или не быть уникальными для их соответствующих факторов.Я пытаюсь получить идентификатор строки каждого наблюдения, у которого есть хотя бы один факторный уровень ниже некоторого заданного количества.Поэтому, если есть хороший способ получить это, я бы хотел получить этот ответ.если нет, то это моя текущая попытка найти решение, и где я застрял, с примером кадра данных:
structure(list(GKUhYLAE = structure(c(1L, 2L, 1L, 1L, 2L, 1L), .Label = c("DDOFi",
"fVvMw"), class = "factor"), OnTaJkLa = structure(c(1L, 1L, 1L,
1L, 1L, 1L), .Label = c("LDyDX", "sbxXu"), class = "factor"),
SsZAZLma = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("fSMSz",
"Hltat"), class = "factor"), BMmgMRvd = structure(c(2L, 1L,
2L, 2L, 2L, 2L), .Label = c("IjEdt", "QZujc"), class = "factor"),
OMtioXZZ = c(3L, 21L, 30L, 21L, 12L, 12L), bIBQTaHw = structure(c(1L,
3L, 1L, 3L, 3L, 2L), .Label = c("ALZyK", "qqkkL", "wQABW"
), class = "factor")), row.names = 1013:1018, class = "data.frame")
, который дает мне следующую таблицу
GKUhYLAE OnTaJkLa SsZAZLma BMmgMRvd OMtioXZZ bIBQTaHw
1013 DDOFi LDyDX fSMSz QZujc 3 ALZyK
1014 fVvMw LDyDX fSMSz IjEdt 21 wQABW
1015 DDOFi LDyDX fSMSz QZujc 30 ALZyK
1016 DDOFi LDyDX fSMSz QZujc 21 wQABW
1017 fVvMw LDyDX fSMSz QZujc 12 wQABW
1018 DDOFi LDyDX fSMSz QZujc 12 qqkkL
Я могувыполните следующую команду, чтобы выяснить, какие факторы имеют значения ниже определенной суммы:
library (dplyr)
library(plyr)
df.test.a = lapply( df.test[,!names( df.test) %in% c("id")], count)
df.test.freqcount <- as.data.frame(do.call(rbind, df.test.a))
df.test.list = df.test.freqcount[which( df.test.freqcount$freq <2),]
Возвращает:
x freq
BMmgMRvd.1 IjEdt 1
OMtioXZZ.1 NA 1
OMtioXZZ.4 NA 1
bIBQTaHw.2 qqkkL 1
(самый левый столбец - это имя столбца с .xпосле этого, который я предполагаю, является уровнем фактора).Вот где я застрял.Я подумал, что лучший способ получить то, что я хочу, это сделать вектор с записями true или 1, когда эта запись моего информационного кадра имеет хотя бы один столбец с фактором, который находится в моем списке отмеченных факторов.Я не могу понять, как это сделать или как создать подходящий список отмеченных факторов.я хочу написать следующее:
df.test.freqcount[which( df.test.freqcount$freq <2),]$x
Поскольку имена не являются уникальными, и я получаю значения NA, я не ожидаю, вместо того, чтобы проверять с помощью $ xi, я хочу проверить с помощью column.factorlevel, которое является скрытым столбцом.слева от таблицы, которую я дал, если возможно.
то, что я хотел бы получить в качестве вывода:
low_count_factor
1013 TRUE
1014 TRUE
1015 TRUE
1016 FALSE
1017 FALSE
1018 TRUE