У меня есть п на 2 объекта, содержащего имена переменных в 1-й столбец и числовые значения (баллов) во 2-й колонке:Удалить последующие элементы с одной и той же подстроки
data <- data.frame(matrix(nrow = 20, ncol = 2))
data[, 2] <- 1:20
data[, 1] <- c("example_a_1", "example_a_2", "example_a_3",
"example_b_1", "example_c_1", "example_d_1",
"example_d_2", "example_d_3", "example_f_1",
"example_g_1", "example_g_2", "example_h_1",
"example_i_1", "example_l_1", "example_o_1",
"example_j_1", "example_m_1", "example_p_1",
"example_k_1", "example_n_1")
data
X1 X2
1 example_a_1 1
2 example_a_2 2
3 example_a_3 3
4 example_b_1 4
5 example_c_1 5
6 example_d_1 6
7 example_d_2 7
8 example_d_3 8
9 example_f_1 9
10 example_g_1 10
11 example_g_2 11
12 example_h_1 12
13 example_i_1 13
14 example_l_1 14
15 example_o_1 15
16 example_j_1 16
17 example_m_1 17
18 example_p_1 18
19 example_k_1 19
20 example_n_1 20
Я не хочу этот объект содержат похожие переменные - если имя переменной имеет одинаковые первые 9 символов (в этом примере) как другое, то оно повторяется. В тех случаях я хочу сохранить только одну из названных переменных.
я могу получить список которых имена переменных являются повторами, как это:
rep <- as.data.frame(table(substr(data[,1], 1, 9)))
rep <- rep[rep[, 2] > 1, ]
rep
Var1 Freq
1 example_a 3
4 example_d 3
6 example_g 2
и, таким образом, определить их в for
петли или другой условной:
for(i in 1:nrow(data)){
if(substr(data[i, 1], 1, 9) %in% rep[,1])){
# What goes here?
# or what's another approach?
}
}
Однако, я не Какую логику я могу использовать для удаления строк с повторяющимися именами?
Конечный объект должен выглядеть следующим образом:
data
X1 X2
1 example_a_1 1
2 example_b_1 4
3 example_c_1 5
4 example_d_1 6
5 example_f_1 9
6 example_g_1 10
7 example_h_1 12
8 example_i_1 13
9 example_l_1 14
10 example_o_1 15
11 example_j_1 16
12 example_m_1 17
13 example_p_1 18
14 example_k_1 19
15 example_n_1 20
'данных [! Дублируется (подстрока (данные $ X1, 1, 9)),]'? –
@Frank done, спасибо –
Я предпочитаю решение @RobertH, используя дубликаты, не стесняйтесь менять принятый ответ. – zx8754