#r #dplyr
#r #dplyr
Вопрос:
У меня есть фрейм данных, который выглядит следующим образом:
Sample_1 Sample_2 Sample_1 Sample_2
1979 0.22 0.50 0.22 0.67
1980 0.15 0.30 0.15 0.77
Я хочу удалить дубликаты Sample_1
, потому что они идентичны (они имеют одинаковые значения за одни и те же годы). Тем не менее, я хочу сохранить Sample_2
, потому что, несмотря на то, что имя дублируется, значения не дублируются, поэтому я хочу переименовать эти типы дублирующихся столбцов во что-то другое, чтобы сохранить их (например Sample_2_edit
, или Sample_2_
).
Как я могу это сделать?
Комментарии:
1. Это матрица или data.frame?
data.frame
не допускал бы дублирования имен2. Привет, акрун! Это таблица данных.
3. Можете ли вы показать dput, поскольку он также не разрешает имена строк
4. Если это матрица, это имеет смысл
Ответ №1:
Предполагая, что данные являются matrix
as data.frame
или data.table
не допускают повторяющихся имен столбцов и data.table
даже не допускают имен строк. Мы можем применить duplicated
к именам столбцов и значениям, т.е. столбцам данных, разделенных на a list
( asplit
). Удалите те столбцы, которые являются дубликатами для обоих случаев, а затем переименуйте повторяющиеся столбцы, сделав их уникальными с помощью make.unique
m2 <- m1[, !(duplicated(asplit(m1, 2)) amp; duplicated(colnames(m1))), drop = FALSE]
colnames(m2) <- make.unique(colnames(m2))
-выходной сигнал
m2
# Sample_1 Sample_2 Sample_2.1
#1979 0.22 0.5 0.67
#1980 0.15 0.3 0.77
данные
m1 <- structure(c(0.22, 0.15, 0.5, 0.3, 0.22, 0.15, 0.67, 0.77), .Dim = c(2L,
4L), .Dimnames = list(c("1979", "1980"), c("Sample_1", "Sample_2",
"Sample_1", "Sample_2")))
Комментарии:
1. Извини, акрун — это была матрица, я запутался. Большое спасибо за вашу помощь 🙂