您可以使用stringr::str_split_fixed
:
library(stringr)
splitted <- str_split_fixed(dt$X2014.land.area, " sq mi ", 2)
splitted[,2] <- gsub(" km2", "", as.character(splitted[,2]))
colnames(splitted) <- c("area sq. mi", "area sq km")
splitted <- data.frame(splitted)
dt.2 <- cbind(dt[,c(1,3)], splitted)
dt.2
# X2010.census city area.sq..mi area.sq.km
# 1 8175133 New york 302.6 783.8
# 2 3792621 Los Angeles 468.7 1213.9
# 3 2695598 Chicago 227.7 589.6
數據
structure(list(X2010.census = c(8175133L, 3792621L, 2695598L),
X2014.land.area = c("302.6 sq mi 783.8 km2", "468.7 sq mi 1213.9 km2",
"227.7 sq mi 589.6 km2"), city = c("New york", "Los Angeles",
"Chicago")), .Names = c("X2010.census", "X2014.land.area",
"city"), row.names = c(NA, -3L), class = "data.frame") -> dt
請認真閱讀[如何在R中創建一個很好的重現示例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – Masoud
*「我有麻煩」* ...有什麼問題?如果您顯示您嘗試過的代碼以及您收到的錯誤或輸出,這將有所幫助。 (請閱讀Masoud提供的鏈接,它非常有幫助,並且會提高更快得到答案的可能性。) – r2evans
另一個基礎R:'with(df,cbind(df,do.call(rbind,regmatches(land.area ,gregexpr(「[0-9] + \\。* [0-9] +」,land.area)))))' – user20650