2017-05-09 50 views
-1

,我有以下的數據幀:的R - 創建新列

X1 
House-US 
House-FR 
FR-FR 
US-US 
FR-US 

我想創造一個第二列這樣的:

X1  X2 
House-US House 
House-FR House 
FR-FR Ia 
US-US Ia 
FR-US Ir 

如果一排房子,那麼X2等於啓動House,如果一行已經離開等於右(FR-FR),那麼X2等於Ia,否則X2等於Ir。

您有解決方案嗎?

回答

2

這工作:

library(data.table) 
setDT(dt) 
splitdf <- dt[, X1] %>% strsplit("-") %>% unlist %>% 
    matrix(ncol = 2, byrow = T) %>% data.frame(stringsAsFactors = FALSE) 
names(splitdf) <- c("L", "R") 
dt$X2 <- ifelse(splitdf[, "L"] == "House", "House", 
       ifelse(splitdf[, "L"] == splitdf[, "R"], "Ia", "Ir")) 
+1

最後我做類似:'LEFT_RIGHT <-data.frame(str_split_fixed(as.character(DT $ X1), 「 - 」,2))LEFT_RIGHT $ FLOW_CAT < (left_right $ x2)== as.character(left_right $ x2),「Intra」,「Inter」)) – MVachelard