Удаление повторяющегося значения в строке
У меня есть два столбца во фрейме данных, которые могли или не могли скопировать значения в них. Если второй столбец имеет то же значение, что и первый столбец, я хотел бы заменить это значение значением NULL или строкой, указывающей, что значение было заменено. Если значения разные, я хочу сохранить оба этих значения. Например: я хочу взять это
col_1 col_2
a a
a b
b d
c c
c d
c c
a a
И превратите это в:
col_1 col_2
a NULL
a b
b d
c NULL
c d
c NULL
a NULL
Как я могу это сделать?

3 ответа
Вы также можете попробовать:
#Code
df$col_2 <- ifelse(df$col_2==df$col_1,'NULL',df$col_2)
Выход:
df
col_1 col_2
1 a NULL
2 a b
3 b d
4 c NULL
5 c d
Некоторые использованные данные:
#Data
df <- structure(list(col_1 = c("a", "a", "b", "c", "c"), col_2 = c("a",
"b", "d", "c", "d")), class = "data.frame", row.names = c(NA,
-5L))
Другой вариант может быть, используя правильныйR
синтаксис:
#Code2
df$col_2[df$col_2==df$col_1]<-'NULL'
Тот же результат.
С использованиемifelse()
подход, получаем вот что:
df
col_1 col_2
1 a NULL
2 a b
3 b d
4 c NULL
5 c d
6 c NULL
7 a NULL
По значению NULL я предполагаю, что вам нужно NA, если вам нужна фактическая строка NULL, вы можете использовать NULL вместо NA_character_, как в ответе Duck.
library(dplyr)
df %>%
mutate(col_2 = case_when(col_1 == col_2 ~ NA_character_, TRUE ~ col_2))
# A tibble: 5 x 2
# Rowwise:
col_1 col_2
<chr> <chr>
1 a NA
2 a b
3 b d
4 c NA
5 c d
На основе новых данных:
df %>% mutate(col_2 = case_when(col_1 == col_2 ~ NA_character_, TRUE ~ col_2))
# A tibble: 7 x 2
# Rowwise:
col_1 col_2
<chr> <chr>
1 a NA
2 a b
3 b d
4 c NA
5 c d
6 c NA
7 a NA
Использованные данные:
df
# A tibble: 7 x 2
col_1 col_2
<chr> <chr>
1 a a
2 a b
3 b d
4 c c
5 c d
6 c c
7 a a
-
0Это работает, только если в таблице нет повторений. Что бы вы сделали, если бы некоторые из пар повторялись так: col_1 col_2 <chr> <chr> 1 aa 2 ab 3 bd 4 cc 5 cd 6a a
-
0@Alokin, обновили мой ответ, проверьте, работает ли он так же.
Мы можем использоватьdata.table
методы, которые быстрые и эффективные
library(data.table)
setDT(df)[col_1 == col_2, col_2 := 'NULL']
-выход
df
# col_1 col_2
#1: a NULL
#2: a b
#3: b d
#4: c NULL
#5: c d
данные
df <- structure(list(col_1 = c("a", "a", "b", "c", "c"), col_2 = c("a",
"b", "d", "c", "d")), class = "data.frame", row.names = c(NA,
-5L))
Другие вопросы
- Индексируйте и назначайте сразу несколько наборов строк3 ответ
У меня есть импортированный фрейм данныхMeasurements который содержит множество наблюдений из эксперимента.Measurements <- data.frame(X = 1:4, Data = c(90, 85, 100, 105)) X Data 1 90 2 85 3 100 4 105 Я хочу добавить еще один столбецCondition кот...
- Удалить первую часть строки в кадре данных R2 ответ
У меня проблемы с решением этого вопроса. Предположим, такой фрейм данных:COL_1 COL_2 COL_3 COL_4 1 UP_RED_LIGHT 23.43 UP_R 2 UP_YELLOW_LIGHT 23.33 UP_Y 3 DP_GREEN_DARK 43.76 DP_G 4 DP_BROWN_LIGHT 45.65 DP_B 5 R_BLACK_DARK 12.32 R_B Я хочу поймать каждую...
- установить нулевые значения строки ниже, чем rowmean3 ответ
У меня есть фрейм данных, который выглядит так v1 v2 v3 v4 v5 4 1 3 4 3 2 2 2 1 1 2 10 2 1 2 etc. Я хочу преобразовать фрейм данных таким образом, чтобы сохранялись только необработанные значения, превышающие исходное среднее, а для остальных был установлен нулевой результат: v1 ...
- Выберите строки на основе шаблона строки в R1 ответ
Предположим, у меня есть следующие данные:df <- data.frame(name = c("TO for", "Turnover for people", "HC people", "Hello world", "beenie man", "apple", "pears", "TO is&...
- Есть ли способ добавить этот столбец и его имя, не требующее значительного переписывания?1 ответ
это факсимиле кода, который у меня есть на данный моментstate_abbr1<- rnorm(8,5,2) county_code1<- rnorm(8,5,2) county_name1<- rnorm(8,5,2) Patient_ID <-c("13962830","20111947", "58786237", "57991640", "79365970", "84356256", &q...
- Использование R для перемещения конца строки в начало строки другой переменной для некоторых строк3 ответ
Я очищаю данные в R, и в некоторых CSV есть досадная ошибка. Иногда первая букваschool вместо этого символьная переменная была добавлена в конецgender переменная (обычно это один символ,m или жеf ). Примеры:mydata <- data.frame( gender = c('m', 'm H', 'f', 'f C'), school = c('Hills College'...
- Как перекодировать столбцы фрейма данных в зависимости от максимальных значений?2 ответ
У меня есть фреймворк с десятками столбцов и несколькими тысячами строк. Я хотел бы перекодировать числовые столбцы с максимальным значением 8 таким образом, чтобы 8 стало NA, и перекодировать числовые столбцы с максимальным значением 9 таким образом, чтобы 8 стало NA, а 9 стало 9999. Для пример,myd...
- Фильтровать фрейм данных в R при появлении нескольких шаблонов в строке1 ответ
Данные У меня есть фрейм данных с одним столбцом, состоящим из строк в R.data <- structure(list(col = c("byr:1985 eyr:2021 iyr:2011 hgt:175cm pid:163069444 hcl:#18171d", "eyr:2023 hcl:#cfa07d ecl:blu hgt:169cm pid:494407412 byr:1936", ...
- Невозможно идентифицировать RMSE из модели ARIMA1 ответ
Я хочу узнать результат ошибки, такой как RMSE и т. д. от ARIMA. У меня есть данные о ночниках за 45 месяцев. У меня есть такая модель ARIMAfitARIMA <- arima(newdata, order=c(0,0,0),seasonal = list(order = c(1,0,0), period = 12)) summary(fitARIMA) ### here is the result Call: arima(x = newdata, o...
- Добавление столбца в фрейм данных в R на основе условий соответствия в другом фрейме данных3 ответ
У меня есть 2 фрейма данных, и я хотел бы добавить столбец в один и добавить значения из другого фрейма данных на основе условий соответствия. Затем я хотел бы повторить это для многих больших наборов данных.# Example dataframe DF1 <- data.frame(Batch = c('a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', ...

"Завидую тестировщикам: все хотят с ними дружить."
ifelse()
может работать. Не могли бы вы привести образец данных по упомянутой вами проблеме? Duck