2014-09-13 21 views
2

下面是一個示例數據集和一些令我困擾的代碼行。我無法弄清楚如何將這些派生變量(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 
+0

你需要重新分配你想改變,即'$ DF年<列 - as.numeric(DF $年)',類似的還有'Session' – 2014-09-13 19:42:38

+0

哦天哪,葉氏工作完美,謝謝! – ctlamb 2014-09-13 19:44:27

回答

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) 

代替

3

你是不是將它們分配給什麼...

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

應該是:

df$Year <- as.numeric(df$Year) 
df$Session <- as.numeric(df$Session) 
相關問題