- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些每周收集的数据,其中的一个片段是这样的,通过 dput
:
p <- structure(list(railroad = structure(c(2L, 2L, 2L, 3L, 3L, 3L), .Label =
c("All Other Railroads",
"BNSF Railway Company", "CN", "CSX Transportation", "Norfolk Southern",
"The Kansas City Southern Railway and Kansas City Southern de Mexico, S.A. de
C.V. Consolidated ",
"Union Pacific Railroad"), class = "factor"), measure = structure(c(1L,
4L, 3L, 1L, 4L, 3L), .Label = c("Cars On Line - By Car Owner",
"Cars On Line - By Car Type", "Terminal Dwell (Hours)", "Train Speed (MPH)"
), class = "factor"), category = structure(c(76L, 35L, 4L, 76L,
35L, 29L), .Label = c("All Trains", "Allentown, PA", "Baltimore, MD",
"Barstow, CA", "Bellevue, OH", "Birmingham, AL", "Box", "Buffalo, NY",
"Chattanooga, TN", "Chicago (Proviso), IL", "Chicago, IL", "Cincinnati, OH",
"Coal Unit", "Columbus, OH", "Conway, PA", "Corbin, KY", "Covered Hopper",
"Decatur, IL", "Denver, CO", "Elkhart, IN", "Entire Railroad",
"Fond du Lac Yard, WI", "Foreign RR", "Fort Worth, TX", "Galesburg, IL",
"Gondola", "Grain Unit", "Hamlet, NC", "Harrison Yard (Memphis), TN",
"Hinkle, OR", "Houston (Englewood), TX", "Houston (Settegast), TX",
"Houston, TX", "Indianapolis, IN", "Intermodal", "Jackson Yard, MS",
"Jackson, MS", "Kansas City, KS", "Kansas City, MO", "Knoxville, TN",
"Laredo, TX", "Lincoln, NE", "Linwood, NC", "Livonia, LA", "Louisville, KY",
"MacMillan Yard (Toronto), ON", "Macon, GA", "Manifest", "Markham Yard, IL",
"Memphis, TN", "Monterrey, NL", "Montgomery, AL", "Multilevel",
"Nashville, TN", "New Orleans, LA", "North Little Rock, AR",
"North Platte East, NE", "North Platte West, NE", "Northtown, MN",
"Nuevo Laredo, TM", "Open Hopper", "Other", "Pasco, WA", "Pct. Private",
"Pine Bluff, AR", "Private", "Roanoke, VA", "Roseville, CA",
"Russell, KY", "San Luis Potosi, SL", "Sanchez, TM", "Selkirk, NY",
"Sheffield, AL", "Shreveport, LA", "Symington Yard (Winnipeg), MB",
"System", "Tank", "Tascherau Yard (Montreal), QC", "Thornton Yard (Vancouver),
BC",
"Toledo, OH", "Total", "Tulsa, OK", "Walker Yard (Edmonton), AB",
"Waycross, GA", "West Colton, CA", "Willard, OH"), class = "factor"),
`201510` = c(66923, 33.9, 39.3, 40227, 30.8, 17.5), `201510` = c(66637,
32.6, 56.6, 40778, 30.9, 18.3), `201510` = c(66309, 33.4,
44.9, 40407, 30.5, 17.3), `201511` = c(65980, 34.6, 37.5,
40316, 30.6, 17.5), `201511` = c(67034, 34.6, 43.1, 40174,
30.4, 18.7)), row.names = c(1L, 15L, 21L, 33L, 47L, 53L), class =
"data.frame")
总共有 143 列,第 4 - 143 列是数字。我想计算具有相同列名的所有列的平均值。所以下面有列 201510
重复了 3 次,列 201511
重复了两次。所需的输出是每列重复的平均值。例如,201510
将具有以下值:
`201510`
[1] 66623.00000 33.30000 46.93333 40470.66667 30.73333 17.70000
我试过下面的代码:
library(tidyverse)
p = data.frame(p)
p %>%
gather(time,value,railroad, measure, category) %>%
mutate(time = gsub('X([^.]+)|.', '\\1', time)) %>%
group_by(time, value, railroad, measure, category) %>%
summarise(MEAN = mean(value)) %>%
ungroup() %>%
spread(time, MEAN)
这会产生以下错误:
`Error in grouped_df_impl(data, unname(vars), drop) :
Column `railroad` is unknown
In addition: Warning message:
attributes are not identical across measure variables;
they will be dropped `
有办法吗?
最佳答案
这里的主要问题是非唯一的列名。 tidyverse 主要采用唯一的列名,并且许多函数添加后缀以使其唯一(如果它们还没有),许多基本函数也是如此,因此在下面的所有解决方案中,我们只是避免使用任何此类函数。我们仍然可以使用 magrittr、purrr 并且某些基本函数也仍然允许这样做。
(1)、(2) 和(4) 只使用magrittr。 (1a) 使用 purrr,在 (3) 中我们使用 tidyr 和 dplyr,但仅在转换为长格式之后。
所有解决方案都会为数字列中的每个唯一名称附加一个名称格式为 mean.*
的列。在问题的示例中,数字列中有两个唯一名称,因此对于该示例,它附加了两列,它们分别命名为 mean.201510
和 mean.201511
,如图所示以下。我们只显示 (1) 中的输出,其余输出类似。
所有解决方案都使用两条管道。第一个由第一个 %>%
组成,第二个流水线作为 cbind
的参数出现,是创建新列的原因。
(1)、(1a) 和 (4) 并列最短。
1) magrittr magrittr
本身好像没有加后缀。 cbind
原始数据框 p
如下。首先将 p
转换为列列表,提取数字组件,将其拆分为列名,将每个组件转换为数据框并获取每个组件的 rowMeans,最后将名称设置为 mean。* .
library(magrittr)
p %>%
cbind(as.list(.) %>%
Filter(is.numeric, .) %>%
split(names(.)) %>%
lapply(as.data.frame) %>%
lapply(rowMeans) %>%
setNames(paste0("mean.", names(.)))
)
给予:
railroad measure category
1 BNSF Railway Company Cars On Line - By Car Owner System
15 BNSF Railway Company Train Speed (MPH) Intermodal
21 BNSF Railway Company Terminal Dwell (Hours) Barstow, CA
33 CN Cars On Line - By Car Owner System
47 CN Train Speed (MPH) Intermodal
53 CN Terminal Dwell (Hours) Harrison Yard (Memphis), TN
201510 201510 201510 201511 201511 mean.201510 mean.201511
1 66923.0 66637.0 66309.0 65980.0 67034.0 66623.00000 66507.0
15 33.9 32.6 33.4 34.6 34.6 33.30000 34.6
21 39.3 56.6 44.9 37.5 43.1 46.93333 40.3
33 40227.0 40778.0 40407.0 40316.0 40174.0 40470.66667 40245.0
47 30.8 30.9 30.5 30.6 30.4 30.73333 30.5
53 17.5 18.3 17.3 17.5 18.7 17.70000 18.1
1a) purrr 我们可以选择将一些基本函数替换为它们的 purrr 或 magrittr 等价物。我们也可以在其他解决方案中翻译成 purrr。
library(magrittr)
library(purrr)
p %>%
cbind(as.list(.) %>%
keep(is.numeric) %>%
split(names(.)) %>%
map(as.data.frame) %>%
map(rowMeans) %>%
set_names(paste0("mean.", names(.)))
)
2) apply/tapply 另一种可能性是分别tapply
每一行。 apply
行执行此操作。
library(magrittr)
p %>%
cbind(as.list(.) %>%
Filter(is.numeric, .) %>%
do.call("cbind", .) %>%
apply(1, tapply, colnames(.), mean) %>%
t %>%
as.data.frame %>%
setNames(paste0("mean.", names(.)))
)
3) as.data.frame.table 这种方法在大多数操作中使用 dplyr 和 tidyr,但使用来自 base 的 as.data.frame.table
而不是 gather
转换为长格式,以避免添加后缀的问题。
library(dplyr)
library(magrittr)
library(tidyr)
p %>%
cbind(as.list(.) %>%
keep(is.numeric) %>%
do.call("cbind", .) %>%
as.data.frame.table %>%
group_by(Var2, Var1) %>%
summarize(Mean = mean(Freq)) %>%
ungroup %>%
spread(Var2, Mean) %>%
select(-Var1) %>%
set_names(paste0("mean.", names(.)))
)
4) lm 如果 X
是数字列,mean.
是列名,则 t(coef(lm( t(X) ~ mean. - 1)))
给出所需的平均列,因此:
library(magrittr)
p %>%
cbind(as.list(.) %>%
Filter(is.numeric, .) %>%
do.call("cbind", .) %>%
{ lm(t(.) ~ mean. - 1, data.frame(mean. = colnames(.))) } %>%
coef %>%
t
)
关于r tidyverse - 计算具有相同名称的多个列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51850172/
SQL 和一般开发的新手,我有一个表(COUNTRIES),其中包含字段(INDEX、NAME、POPULATION、AREA) 通常我添加一个客户端(Delphi)计算字段(DENSITY)和 On
我想使用 calc(100%-100px),但在我的 demo 中不起作用由于高度只接受像素,因此如何将此百分比值转换为像素。 最佳答案 以下将为您提供高度: $(window).height();
我正在尝试在 MySQL 中添加列并动态填充其他列。 例如我有一张表“数字”并具有第 1 列、第 2 列、第 3 列,这些总数应填充在第 4 列中 最佳答案 除非我误解了你的问题,否则你不只是在寻找:
我想返回简单计算的结果,但我不确定如何执行此操作。我的表格如下: SELECT COUNT(fb.engineer_id) AS `total_feedback`, SUM(fb.ra
我一直在尝试做这个程序,但我被卡住了,我仍然是一个初学者,任何帮助将不胜感激。我需要程序来做 打印一个 10 X 10 的表格,其中表格中的每个条目都是行号和列号的总和 包含一个累加器,用于计算所有表
这个计算背后一定有一些逻辑。但我无法得到它。普通数学不会导致这种行为。谁能帮我解释一下原因 printf ("float %f\n", 2/7 * 100.0); 结果打印 1.000000 为什么会
我想计算从 0 到 (n)^{1/2} - 1 的数字的 AND每个数字从 0 到 (n)^{1/2} - 1 .我想在 O(n) 中执行此操作时间,不能使用 XOR、OR、AND 运算。 具体来说,
如何在 Excel 中将公式放入自定义数字格式?例如(出于说明目的随机示例), 假设我有以下数据: 输入 输出 在不编辑单元格中的实际数据的情况下,我想显示单元格中的值除以 2,并保留两位小数: 有没
每次我在 Flutter 应用程序中调用计算()时,我都会看到内存泄漏,据我所知,这基本上只是一种生成隔离的便捷方法。我的应用程序内存占用增加并且在 GC 之后永远不会减少。 我已将我的代码简化为仅调
我有数字特征观察 V1通过 V12用于目标变量 Wavelength .我想计算 Vx 之间的 RMSE列。数据格式如下。 每个变量“Vx”以 5 分钟的间隔进行测量。我想计算所有 Vx 变量的观测值
我正在寻找一种使用 C 语言计算文件中未知字符数的简单方法。谢谢你的帮助 最佳答案 POSIX 方式(可能是您想要的方式): off_t get_file_length( FILE *file ) {
我正在使用 Postgres,并且我正试图围绕如何在连续日期跨度中得出第一个开始日期的问题进行思考。例如 :- ID | Start Date | End Date =================
我有一个订单表格,我在其中使用 jQuery 计算插件来汇总总数。 此求和工作正常,但生成的“总和”存在问题。总之,我希望用逗号替换任何点。 代码的基础是; function ($this) {
我在使用 double 变量计算简单算术方程时遇到问题。 我有一个具有 double 属性 Value 的组件,我将此属性设置为 100。 然后我做一个简单的减法来检查这个值是否真的是 100: va
我在这里看到了一些关于 CRC 32 计算的其他问题。但没有一个让我满意,因此是这样。 openssl 库是否有任何用于计算 CRC32 的 api 支持?我已经在为 SHA1 使用 openssl,
当我在PHP日期计算中遇到问题时,我感到惊讶。 $add = '- 30 days'; echo date('Y-m-01', strtotime($add)); // result is 2017-
我正在使用 javascript 进行练习,我编写了这个脚本来计算 2 个变量的总和,然后在第三个方程中使用这个总和!关于如何完成这项工作的任何想法都将非常有用! First Number:
我有一个来自EAC的提示单和一个包含完整专辑的FLAC文件。 我正在尝试制作一些python脚本来播放文件,因为我需要能够设置在flac文件中开始的位置。 如何从CueSheet格式MM:SS:FF转
这个问题已经有答案了: Adding two numbers concatenates them instead of calculating the sum (24 个回答) 已关闭去年。 我有一个
4000 我需要上面字段 name="quantity" 和 id="price" 中的值,并使用 javascript 函数进行计算,并将其显示在字段 id= 中仅当我单击计算按钮时才显示“总
我是一名优秀的程序员,十分优秀!