【问题标题】:Changing Class and Mode from Character to Numeric将类和模式从字符更改为数字
【发布时间】:2014-11-07 17:37:38
【问题描述】:

下面是一个样本数据集和几行令我困扰的代码。我不知道如何将这些派生变量(Year 和 Session)转换为数字,以便获得适当的摘要并使用“子集”函数。

##Generate sample dataset
df=data.frame(StudyAreaVisitNote=c("2006 Session 1","2006 Session 2", "2008 Session 4", "2012 Session 3"))

##Create new column denoting year and session on their own
as.factor(df$StudyAreaVisitNote)
df$Year <- substr(x = df$StudyAreaVisitNote, start = 1, stop = 4)
df$Session <- substr(x = df$StudyAreaVisitNote, start = 13, stop = 14)

##Summary of Data
summary(df)  ## Year and Session are Class and Mode "Character", summary provides little info

##Turn Year and Session into Numeric
as.numeric(df$Year)
as.numeric(df$Session)


##Try Summary of Data Again
summary(df)  ## Again, Year and Session are Class and Mode "Character", summary provides little info

【问题讨论】:

  • 您需要重新分配要更改的列,即df$Year &lt;- as.numeric(df$Year)Session 也是如此
  • 哦,天哪,是的,工作完美,谢谢!!!

标签: r class character mode


【解决方案1】:

线条

as.factor(df$StudyAreaVisitNote)
as.numeric(df$Year)
as.numeric(df$Session)

不要永久更改df 中的值。它们返回打印到控制台的转换后的向量,然后,因为您没有将它们保存在任何地方,所以一旦调用该行,它们就会消失。通常 R 中的对象不会通过引用更新,您必须始终将返回的结果重新分配到您想要存储它的位置。所以试试

df$Year <- as.numeric(df$Year)
df$Session <- as.numeric(df$Session)

改为

【讨论】:

    【解决方案2】:

    你没有将它们分配给任何东西......

    as.numeric(df$Year)
    as.numeric(df$Session)
    

    应该是:

    df$Year <- as.numeric(df$Year)
    df$Session <- as.numeric(df$Session)
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2023-01-12
      • 2018-09-26
      • 1970-01-01
      • 2015-08-02
      • 2018-03-21
      • 2010-10-06
      • 1970-01-01
      相关资源
      最近更新 更多