Если у меня есть код внизу сообщения, как я могу заменить имена столбцов df1 вторым столбцом df2, используя частичное сопоставление первого столбца df2? Результат должен выглядеть как df3. Весь мой фрейм данных заполнен многими другими именами, помимо .length (например, CS1.1.width, CS2.12.height, et c), но CS #. #. всегда остается в названии.
Затем мне нужно удалить ".length" из имен столбцов.
Я попытался использовать pmatch ниже для первой части вопроса, но результат неверен.
names(df1) <- df2$new[pmatch(names(df1), df2$partial_atch)]
Как бы я go мог об этом? Спасибо.
old <- c("CS1.1.length", "CS1.7.length", "CS1.10.length", "CS1.12.length", "CS2.4.length", "CS2.6.length", "CS2.9.length", "CS2.11.length", "CS1.1.height")
df1 <- data.frame()
for (k in old) df1[[k]] <- as.character()
new <- c("Bob", "Alex", "Gary", "Taylor", "Tom", "John", "Pat", "Mary")
partial_match <- c("CS1.1", "CS1.7", "CS1.10", "CS1.12", "CS2.4", "CS2.6", "CS2.9", "CS2.11")
df2 <- data.frame(Partial_Match = partial_match, Name = new)
new1 <- c("Bob.length", "Alex.length", "Gary.length", "Taylor.length", "Tom.length", "John.length", "Pat.length", "Mary.length", "Bob.height")
df3 <- data.frame()
for (k in new) df3[[k]] <- as.character()
Изменить: количество столбцов в df1 больше, чем количество элементов в partial_match, поэтому в качестве примера добавлен дополнительный столбец в df1.