在R中,当paste()参数的值为NA时,如何跳过该参数
我有一个数据框,其中有“城市”、“州”和“国家”列。我想创建一个字符串,将“城市、州、国家”连接起来。然而,我的一个城市没有州(而是有一个在R中,当paste()参数的值为NA时,如何跳过该参数,r,dataframe,paste,na,R,Dataframe,Paste,Na,我有一个数据框,其中有“城市”、“州”和“国家”列。我想创建一个字符串,将“城市、州、国家”连接起来。然而,我的一个城市没有州(而是有一个NA)。我希望该城市的字符串为“城市,国家”。以下是创建错误字符串的代码: # define City, State, Country city <- c("Austin", "Knoxville", "Salk Lake City", "Prague") state <- c("Texas", "Tennessee", "Utah", N
NA
)。我希望该城市的字符串为“城市,国家”。以下是创建错误字符串的代码:
# define City, State, Country
city <- c("Austin", "Knoxville", "Salk Lake City", "Prague")
state <- c("Texas", "Tennessee", "Utah", NA)
country <- c("United States", "United States", "United States", "Czech Rep")
# create data frame
dff <- data.frame(city, state, country)
# create full string
dff["string"] <- paste(city, state, country, sep=", ")
我该如何跳过
NA,
,包括sep=“,”
另一种方法是在以后修复它:
gsub("NA, ","",dff$string)
#[1] "Austin, Texas, United States"
#[2] "Knoxville, Tennessee, United States"
#[3] "Salk Lake City, Utah, United States"
#[4] "Prague, Czech Rep"
备选方案#2是在您拥有名为dff
的data.frame
后使用apply:
apply(dff, 1, function(x) paste(na.omit(x),collapse=", ") )
我本来打算给出一个两段式的答案,但有人把第一段作为自己的答案;-)事实上,我对每一个的性能都很感兴趣,还有可能的问题……如果您有多个包含NAs的专栏,那么有一个关于在粘贴中抑制NAs的一般性讨论。
apply(dff, 1, function(x) paste(na.omit(x),collapse=", ") )