从字符到数字改变类和模式

时间:2014-09-13 19:39:25

标签: r class character mode

下面是一个示例数据集和几行令我困扰的代码。我无法弄清楚如何将这些派生变量(年和会话)转换为数字,以便我可以获得正确的摘要并使用“子集”函数。

##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

2 个答案:

答案 0 :(得分:4)

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)

代替

答案 1 :(得分:3)

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

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

应该是:

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