簡體   English   中英

如何將格式更改為矩陣列表中的百分比

[英]How do change the format to percent in a list of matrices

我有一個矩陣列表,我想將矩陣中的值更改為百分比。

列表中的矩陣如下所示

       [,1]     [,2]        [,3]        [,4]        [,5]        [,6]        [,7]        [,8]        [,9]       
Year     ""    "2010"      "2011"      "2012"      "2013"      "2014"      "2015"      "2016"      "2017"     
Women "Women"  "0.4521919" "0.4360186" "0.4344594" "0.4314785" "0.4363432" "0.4402187" "0.4437688" "0.4414514"
Men    "Men"   "0.5478081" "0.5639814" "0.5655406" "0.5685215" "0.5636568" "0.5597813" "0.5562312" "0.5585486"

我想轉換成

       [,1]     [,2]        [,3]        [,4]        [,5]        [,6]        [,7]        [,8]        [,9]       
Year     ""    "2010"      "2011"      "2012"      "2013"      "2014"      "2015"      "2016"      "2017"     
Women "Women"  "45.21919%" "43.60186%" "43.44594%" "43.14785%" "43.63432%" "44.02187%" "44.37688%" "44.14514%"
Men    "Men"   "54.78081%" "56.39814%" "56.55406%" "56.85215%" "56.36568%" "55.97813%" "55.62312%" "55.85486%"

我試圖用lapply做到這lapply

x <- lapply(df, function(x) percent(as.numeric(x[2:nrow(x),(3:ncol(x))])))

但這會返回一個字符向量,而不是兩行,然后可以使用cbind返回所需的格式。 作為字符的值並不是真正的問題,但最好使用數字值。

是否有人對如何解決上述問題提出建議。 感謝所有提示!

/ J

矩陣只能保存一種數據類型。 使用as.data.frame()將每個矩陣轉換為data.frame,以便在同一數據結構中具有不同的數據類型。 您也可以刪除每個矩陣的第一列,因為它似乎是數據結構中唯一的character值,所以它也應該工作。

盡管我將使用data.frame而不是矩陣,但這可能取決於您的最終目標。 您可以對矩陣進行子集化並附加一個%符號。

xy <- matrix(runif(9), nrow = 3)
xy[, 1] <- c("", "men", "women")
xy[1, ] <- c("", "2010", "2011")
xy[-1, -1] <- paste(as.numeric(xy[-1, -1]) * 100, "%")

xy
     [,1]    [,2]                 [,3]                
[1,] ""      "2010"               "2011"              
[2,] "men"   "85.1143697509542 %" "11.8173067457974 %"
[3,] "women" "89.0305595472455 %" "64.4668221008033 %"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM