Я подумал, что это будет простой поиск, но я не смог найти ответ. В основном у меня есть столбец из одного dataframe
, который содержит символы без нуля между первым и третьим символом (например, "A1" ), но мой другой dataframe
содержит ту же переменную, но с бессмысленной " ноль "в середине (например, " A01 ").
Я бы хотел rbind
их, но эти значения класса character
должны быть одинаковыми. Я думаю, что мне нужен оператор ifelse
, потому что в столбце есть другие переменные, содержащие второй символ (но не ноль).
Пример данных
# Dataframe with no zeroes between the characters in column_A
set.seed(123)
df_nozero <- data.frame(column_A = c(rep("A1",5),rep("B10",5)),
column_B = sample(0:100,10),stringsAsFactors = FALSE)
print(df_nozero)
column_A column_B
1 A1 29
2 A1 78
3 A1 40
4 A1 86
5 A1 91
6 B10 4
7 B10 50
8 B10 83
9 B10 51
10 B10 42
# Dataframe with zeroes between the characters in column_A
set.seed(123)
df_zero <- data.frame(column_A = c(rep("A01",5),rep("B10",5)),
column_B = sample(0:50,5), stringsAsFactors = FALSE)
print(df_zero)
column_A column_B
1 A01 14
2 A01 39
3 A01 20
4 A01 42
5 A01 44
6 B10 14
7 B10 39
8 B10 20
9 B10 42
10 B10 44
Желаемый выход
column_A column_B
1 A1 29
2 A1 78
3 A1 40
4 A1 86
5 A1 91
6 B10 4
7 B10 50
8 B10 83
9 B10 51
10 B10 42
11 A1 14
12 A1 39
13 A1 20
14 A1 42
15 A1 44
16 B10 14
17 B10 39
18 B10 20
19 B10 42
20 B10 44
Неудачные попытки
df_corrected <- df_zero
df_corrected$column_A <- ifelse(substr(df_corrected$column_A,2,2)=="0","",df_corrected$column_A)
print(df_corrected)
column_A column_B
1 14
2 39
3 20
4 42
5 44
6 B10 14
7 B10 39
8 B10 20
9 B10 42
10 B10 44
df_corrected$column_A <- ifelse(substr(df_corrected$column_A,2,2)=="0",substr(df_corrected$column_A,1,3),df_corrected$column_A)
print(df_corrected)
column_A column_B
1 A01 14
2 A01 39
3 A01 20
4 A01 42
5 A01 44
6 B10 14
7 B10 39
8 B10 20
9 B10 42
10 B10 44
Если бы был способ выбрать только первый и третий символ в column_A
, то я мог бы легко заменить ноль только первым и третьим символом.