代码之家  ›  专栏  ›  技术社区  ›  Niko Gamulin

如何用r中csv数据的列创建帧数据结构?

  •  0
  • Niko Gamulin  · 技术社区  · 14 年前

    下面是R中导入数据的前五行:

    数据[1:5,]

        user event_date day_of_week
    1 00002781A2ADA816CDB0D138146BD63323CCDAB2 2010-09-04    Saturday
    2 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-04    Saturday
    3 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-07     Tuesday
    4 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-08   Wednesday
    5 00002D2354C7080C0868CB0E18C46157CA9F0FD4 2010-09-17      Friday
      distinct_events_a_count total_events_a_count
    1                             2                          2
    2                             2                          2
    3                             1                          3
    4                             1                          1
    5                             1                          1
      events_a_duration distinct_events_b_count total_events_b_count
    1                     615                       1                    1
    2                      77                       1                    1
    3                     201                       1                    1
    4                      44                       1                    1
    5                       3                       1                    1
      events_b_duration
    1                      47
    2                      43
    3                     117
    4                      74
    5                      18
    

    问题是第6列和第9列是作为因子而不是数字来读取的,因此我不能执行数学运算。为了将导入的数据转换为适当的格式,我尝试以下方式创建结构数据集:

    dataset<-data.frame(events_a_duration=as.numeric(c(data[,6])), events_b_duration=as.numeric(c(data[,9])))
    

    但是检查这些值时,我注意到框架结构不包含适当的值:

     dataset[1,]
    
    
    events_a_duration events_b_duration
    1                   10217                    6184
    

    值应为615和47。

    因此,我不知道如何创建由导入的数据列组成的框架数据结构,如果有人能够展示创建适当数据结构的方法,我将非常感谢。

    2 回复  |  直到 12 年前
        1
  •  4
  •   Wok    14 年前

    您的问题是,您正在使用类的数量而不是相应的值将因子转换为整数。可以检查类是否按值的升序编号:

    > as.numeric(factor(c(615,47,42)))
    [1] 3 2 1
    > as.numeric(factor(c(615,42,47)))
    [1] 3 1 2
    > as.numeric(factor(c(615,42,47,37)))
    [1] 4 2 3 1
    > as.numeric(factor(c(615,42,37,47)))
    [1] 4 2 1 3
    

    使用 as.numeric(as.character(MyFactor)) . 如下图所示:

    > as.numeric(as.character(factor(c(615,42,37,47))))
    [1] 615  42  37  47
    
        2
  •  1
  •   Julius Vainora    12 年前
    data <- read.csv ("data.csv", stringsAsFactors=FALSE)