简体   繁体   English

将列数据转换为R中的行

[英]Convert Column Data to Rows in R

Input : 输入:

    Col_A                Col_B
1   Samsung_Note           10
2   Samsung_Notebook       20
3   Samsung_Tablet_Device  30
4   Note                   40

Expected Output: 预期产量:

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

I would like to change my data as per provided expectations. 我想根据提供的期望更改数据。 Please suggest an optimized way to perform this operation. 请提出一种优化的方法来执行此操作。

For this particular purpose please assume x_z = z_x 为此,请假设x_z = z_x

maybe there's an easier way, but this should work: 也许有一种更简单的方法,但这应该可行:

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)

Where df denotes the input data frame. 其中df表示输入数据帧。 Make sure that COL_A is not a factor but a character! 确保COL_A不是一个因素而是一个字符!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM