我认为这将是一个简单的搜索,但是我一直找不到答案。基本上,我有一个来自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
中的第一个和第三个字符,那么我可以很容易地仅用第一个和第三个字符替换零。