代码之家  ›  专栏  ›  技术社区  ›  Akash Singhi

删除R中的换行符“\n”

  •  1
  • Akash Singhi  · 技术社区  · 10 年前

    我一直在尝试从R中的数据集中删除换行符。所有列都是因子,因此,在我用“NA”替换“\n”之前,我需要将数据类型从因子更改为字符或日期。为了更好地理解我的代码和示例数据集:

         sku          Stockout_start        Stockout_End      create_date
      0BX-164463    \N                 1/29/2015 11:35  1/29/2015 11:35
      0BX-164463    2/11/2015 18:01               \N    2/11/2015 18:01
      0BX-164464    \N                 1/29/2015 11:38  1/29/2015 11:38
      0BX-164464    1/30/2015 4:38                  \N  1/30/2015 4:38
      0BX-164481    \N                 1/28/2015 9:58   1/28/2015 9:58
      0BX-164482    \N                1/29/2015 11:37   1/29/2015 11:37
      0BX-164482    2/4/2015 7:17                 \N    2/4/2015 7:17
      0BX-164483    \N                1/29/2015 11:37   1/29/2015 11:37
      0BX-164483    2/7/2015 4:37                 \N    2/7/2015 4:37
      0BX-164496    \N                1/29/2015 9:45    1/29/2015 9:45
      0BX-164497    \N                1/28/2015 10:02   1/28/2015 10:02
      0BX-164498    \N                1/29/2015 9:45    1/29/2015 9:45
      0BX-164499    \N                1/29/2015 11:36   1/29/2015 11:36
      0BX-164500    \N                1/29/2015 11:36   1/29/2015 11:36
      0BX-164501    \N                1/29/2015 11:36   1/29/2015 11:36
    

    我一直在使用以下代码来更正数据:

    stk[,2]<- as.Date(as.character(stk[,2]),format = "%y-%m-%d %H:%M:%S")
    stk[,2]<- as.character(as.Date(stk[,2], origin = "1970-01-01"))
    

    但这些代码将我的第2列更改为“NA”。 请帮忙。

    3 回复  |  直到 10 年前
        1
  •  1
  •   akrun    10 年前

    您可以指定 na.strings stringsAsFactors=FALSE read.csv/read.table 。(我将分隔符更改为 , 并保存输入数据)

     stk <- read.csv('Akash.csv', header=TRUE, stringsAsFactors=FALSE,
           sep=",", na.strings="\\N")
     head(stk,3)
     #         sku  Stockout_start    Stockout_End     create_date
     #1   0BX-164463            <NA> 1/29/2015 11:35 1/29/2015 11:35
     #2   0BX-164463 2/11/2015 18:01            <NA> 2/11/2015 18:01
     #3   0BX-164464            <NA> 1/29/2015 11:38 1/29/2015 11:38
    

    如果需要将多个列替换为“日期”类

     stk[-1] <- lapply(stk[-1], as.Date, format='%m/%d/%Y %H:%M') 
     str(stk)
     #'data.frame': 15 obs. of  4 variables:
     #$ sku           : chr  "  0BX-164463" "  0BX-164463" "  0BX-164464" "  0BX-164464" ...
     #$ Stockout_start: Date, format: NA "2015-02-11" ...
     #$ Stockout_End  : Date, format: "2015-01-29" NA ...
     #$ create_date   : Date, format: "2015-01-29" "2015-02-11" ...
    
        2
  •  0
  •   RockScience    10 年前

    您确实应该在调用之前清理数据 as.Date

    能否先确保data.frame的字符串AsFactors=FALSE,然后尝试

    stk[stk$Stockout_start=="\N","Stockout_start"]=NA
    

    然后你的代码

    stk[,2]<- as.Date(as.character(stk[,2]),format = "%y-%m-%d %H:%M:%S")
    stk[,2]<- as.character(as.Date(stk[,2], origin = "1970-01-01"))
    
        3
  •  0
  •   dax90    10 年前

    更简单的代码是 strptime

    stk[,2]<-strptime(stk[,2], "%d/%m/%Y %H:%M")
    
    推荐文章