繁体   English   中英

在数据框中拆分列

[英]Splitting columns in a dataframe

我有一个名为a的数据框,具有以下结构的1个变量

    Name                Pid Pri Thd  Hnd   Priv        CPU Time    Elapsed Time 
    Idle                  0   0   4    0      0    13:26:52.515     4:18:08.670
    System                4   8 148 1199   1616     0:10:14.750     4:18:08.670
    smss                388  11   2   49    336     0:00:00.109     4:18:08.597 

现在,我想将数据框分成名称分别为Name,Pid,Pro,Thd,Hnd等的列。

我尝试过strsplit:

    df<-strsplit(a," ")

但是结果就像它们被分割成所有带有空格的字符一样。 请帮忙

> dput(a)
c("Name                Pid Pri Thd  Hnd   Priv        CPU Time    Elapsed Time ", 
"Idle                  0   0   4    0      0    13:26:52.515     4:18:08.670", 
"System                4   8 148 1199   1616     0:10:14.750     4:18:08.670", 
"smss                388  11   2   49    336     0:00:00.109    4:18:08.597" )

我们可以使用read.table

  df1 <- read.table(text=a, sep='', header=TRUE, stringsAsFactors=FALSE)
  df1 
  #    Name Pid Pri Thd  Hnd
  #1   Idle   0   0   4    0
  #2 System   4   8 148 1199
  #3   smss 388  11   2   49

  str(df1)
  #'data.frame':    3 obs. of  5 variables:
  #$ Name: chr  "Idle" "System" "smss"
  #$ Pid : int  0 4 388
  #$ Pri : int  0 8 11
  #$ Thd : int  4 148 2
  #$ Hnd : int  0 1199 49

假设新对象是'a1',我们在没有标题行的情况下读取行( read.table ),然后在为“ CPU Time”和“ Elapsed”创建了一些引号后设置新数据集('df2')的列名时间”,使用gsub (将其作为单个字符串读取)进行lookarounds并通过scan获得单词的vector

  df2 <- read.table(text=a1[-1], sep='', header=FALSE, 
                 stringsAsFactors=FALSE)
  colnames(df2) <-  scan(text=gsub('(?<=Time)\\s|\\s(?=Elapsed|CPU)',
                "'", a1[1], perl=TRUE), what='', quiet=TRUE)
  df2
  #    Name Pid Pri Thd  Hnd Priv     CPU Time Elapsed Time
  #1   Idle   0   0   4    0    0 13:26:52.515  4:18:08.670
  #2 System   4   8 148 1199 1616  0:10:14.750  4:18:08.670
  #3   smss 388  11   2   49  336  0:00:00.109  4:18:08.597

数据

  a <- c("Name                Pid Pri Thd  Hnd",
   "Idle                  0   0   4    0", 
   "System                4   8 148 1199   ", 
  "smss                388  11   2   49    "
  )

暂无
暂无

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

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