2016-02-12 20 views
0

我正在從多個數據框製作摘要數據幀。我正在使用的代碼正常工作以替換新框架中的第一行,但不適用於任何其他行。僅有條件替換第一行上的函數

`tableCols<- 'Sessions, Pages/session, Session duration, Bounce rate, No. or return visits, Age, 18-24, 25-34, 35-44, 45-54, 55-64, 65+, % Male, Device, Mobile, Desktop, Tablet, Affinity category, Movie Lover, TV Lover, Technophile, In-Market segment, Employment, Education Autos & Vehicles ' 
tableCols<-strsplit(as.character(tableCols), ',') 
    Table<-data.frame(Dimension =unlist(tableCols), All_users = numeric(24), Non_bounce = numeric(24)) 
    #this works and is in the first row 
    Table$All_users[Table$Dimension=="Sessions"]<-sum(gaDatCY15$sessions) 
    #this does not 
    Table$All_users[Table$Dimension=="Session duration"]<-sum(gaDatCY15a$sessionDuration)` 

我可以在第二次運行和打印sum函數時使用它,並且我得到正確的值。但是,它不會覆蓋新數據框中對應行的值。

回答

0

你的問題可能是你的維度是因素,但你期望他們是字符串。嘗試

tableCols<- 
    gsub( 
    pattern = "^\\s", 
    replacement = "", 
    x = strsplit(as.character(tableCols), ',')[[1]] 
) 
Table<- 
    data.frame(
    Dimension = tableCols, 
    All_users = numeric(24),  
    Non_bounce = numeric(24), 
    stringsAsFactors = FALSE 
    ) 

我用stringsAsFactors = FALSE,防止轉化爲因素。我討厭stringsAsFactors。我從http://adv-r.had.co.nz/Data-structures.html得知的第一件事就是在變量發現他們行爲異常時,對變量使用str()

另一件事我注意到的是上逗號是strsplit被轉換

'Sessions, Pages/session, ... ' 

到[會議],[_Pages /會話] ...注意下劃線在第二列名的前面實際上是一個空間。我使用gsub去掉領先的空格。

+0

將解析字符更改爲「,」從「,」修復問題。感謝您的確認。當我必須使用我不創建的列表(不像這個列表)時,我會記住gsub。感謝你能這麼快回復! – cole