如何解决重新调整 R 中数字总和的值
如果我有这些数据框
df1<- as.numeric(c("20","25","15","50"))
df2<- as.numeric (c("15","20","10","5"))
df3<- as.numeric(c("10","7","13"))
my_list <- list(df1,df2,df3)
sum_dat <- as.numeric(c("180","90","5"))
这里我希望列表 my_list 中的数据框即 df1 中的数字被重新缩放,使得 df1 (20+25+15+50) 的总和接近或等于 180,df2 总和等于 90,并且 df 3 sum 等于 5。
解决方法
我们可以使用 Sub ExportRangetoFile()
'Update 20130913
Dim wb As Workbook
Dim saveFile As String
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range",xTitleId,WorkRng.Address,Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb = Application.Workbooks.Add
WorkRng.Copy
wb.Worksheets(1).Paste
saveFile = Application.GetSaveAsFilename(fileFilter:="Text Files (*.txt),*.txt")
wb.SaveAs Filename:=saveFile,FileFormat:=xlText,CreateBackup:=False
wb.Close
Application.CutCopyMode = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
(假设 Map
都是 vector
)
numeric
,
使用 asplit
+ list2DF
+ colSums
的另一个基本 R 选项
asplit(t(t(df <- list2DF(my_list)) / colSums(df) * sum_dat),2)
给予
[[1]]
[1] 32.72727 40.90909 24.54545 81.81818
[[2]]
[1] 27 36 18 9
[[3]]
[1] 1.1111111 0.7777778 1.6666667 1.4444444
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。