首页 > 解决方案 > R中的数据排列

问题描述

我的数据集看起来像这样

destaddr:192.168.0   srcaddr:231.19.0.1  protocol:8
destaddr:192.168.0   srcaddr:231.19.0.1  protocol:8
destaddr:192.168.0   srcaddr:231.19.0.1  protocol:8

我希望我的数据集在 rstudio 中采用这种形式:

destaddr         srcaddr            protocol
192.168.0        231.19.0.1             8
192.168.0        231.19.0.1             8
192.168.0        231.19.0.1             8

标签: r

解决方案


欢迎来到 SO!使用 base R,替换字母和 " :" 什么都没有,创建data.frame这样的东西怎么样:

new_df <- data.frame (
           destadd = gsub('[a-z]+:', '', df$V1),
           srcaddr = gsub('[a-z]+:', '', df$V2),
           protocol= gsub('[a-z]+:', '', df$V3)
                     )

new_df
    destadd    srcaddr protocol
1 192.168.0 231.19.0.1        8
2 192.168.0 231.19.0.1        8
3 192.168.0 231.19.0.1        8

或者,您可以使用 Ankur Sinha 在评论中的建议使其更短:

new_df <- as.data.frame(lapply(df, function(x) gsub("[a-z]+:","", x)))
colnames(new_df) <-  c('destaddr','srcaddr','protocol')

有数据:

df <- read.table(text = 'destaddr:192.168.0   srcaddr:231.19.0.1  protocol:8
destaddr:192.168.0   srcaddr:231.19.0.1  protocol:8
destaddr:192.168.0   srcaddr:231.19.0.1  protocol:8', header = F)

推荐阅读