Col_A Col_B
1 Samsung_Note 10
2 Samsung_Notebook 20
3 Samsung_Tablet_Device 30
4 Note 40
Col_A Col_B
Samsung 10
Note 10
Samsung_Note 10
Samsung 20
Notebook 20
Samsung_Notebook 20
Samsung 30
Tablet 30
Device 30
Samsung_Tablet 30
Tablet_Device 30
Samsung_Device 30
Note 40
我想根据提供的期望更改我的数据。请建议一种优化的方法来执行此操作。
出于这个特殊目的,请假设x_z = z_x
答案 0 :(得分:1)
也许有一种更简单的方法,但这应该有效:
elements <- strsplit(df$COL_A, "_")
elementsAll <- lapply(seq_along(elements), function(i) append(elements[[i]], df$COL_A[i]))
dfTemp <- data.frame(
V1 = unlist(elementsAll),
V2 = rep(unlist(lapply(elementsAll, function(x) x[length(x)])),
unlist(lapply(elementsAll, length)))
)
dfTemp <- dfTemp[!duplicated(dfTemp),]
desiredDF <- merge(df, dfTemp, by.x = "COL_A", by.y = V2)
其中df表示输入数据帧。 确保COL_A不是一个因素,而是一个角色!