我有這個data.table:如何R中兩列結合data.table這樣的:
CITY CITY2
Phoenix NA
NASHVILLE Nashville
Los Angeles Los Angeles
NEWYORK New York
CHICAGO NA
這是結果,我想:
CITY
Phoenix
Nashville
Los Angeles
New York
CHICAGO
我試過在很多方面和沒有工作。任何想法?
我有這個data.table:如何R中兩列結合data.table這樣的:
CITY CITY2
Phoenix NA
NASHVILLE Nashville
Los Angeles Los Angeles
NEWYORK New York
CHICAGO NA
這是結果,我想:
CITY
Phoenix
Nashville
Los Angeles
New York
CHICAGO
我試過在很多方面和沒有工作。任何想法?
這是一個有點數據幀的亂七八糟的,你有兩列一些理想的結果,但有似乎是一個缺乏的可預測性。你確定city2對所有不是NA的值都有正確的格式嗎? 無論採用哪種方法,都有幾種方法可以使用dplyr和「工具」軟件包以正確的城市名稱大寫形式獲得最終所需的答案。
library(dplyr)
library(tools)
city_df <- data.frame(
city = c("Phoenix", "NASHVILLE", "Los Angeles", "NEWYORK", "CHICAGO"),
city2 = c(NA, "Nashville", "Los Angeles", "New York", NA),
stringsAsFactors = FALSE)
第一種方法假定city_df $ city包含所有城市但格式不正確。
city_df %>%
mutate(city =
replace(x = city, city == "NEWYORK", values = "New York")) %>%
select(city) %>%
mutate(city = tools::toTitleCase(tolower(city)))
返回
city
1 Phoenix
2 Nashville
3 Los Angeles
4 New York
5 Chicago
如果您需要df_city $城市與df_city $城2的非NA值替換的值,你可以做到以下幾點:
city_df %>%
mutate(city = case_when(
!(is.na(city2)) ~ city2,
is.na(city2) ~ city)) %>%
select(city) %>%
mutate(city = tools::toTitleCase(tolower(city)))
這返回與上面相同的列。
請使用dput來提供更容易使用的示例數據,幷包含您之前的一些嘗試,以便我們可以更輕鬆地爲您提供幫助。 –
'df2 < - ifelse(is.na(df $ CITY2),df $ CITY,df $ CITY2)' –