- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据:
> print(DT)
scenario hyear P
1: flux_0_P1.0_1 2013-2014 0.14044214
2: flux_0_P1.0_1 2014-2015 0.09141671
3: flux_0_P1.0_2 2013-2014 0.69610343
4: flux_0_P1.0_2 2014-2015 0.52359157
5: flux_0_P1.0_3 2013-2014 0.89724457
6: flux_0_P1.0_3 2014-2015 0.78003786
7: flux_0_P1.0_10 2013-2014 0.73752843
8: flux_0_P1.0_10 2014-2015 0.62216371
9: flux_0_P1.0_11 2013-2014 0.14259943
10: flux_0_P1.0_11 2014-2015 0.15309200
11: flux_0_P1.0_12 2013-2014 0.81472886
12: flux_0_P1.0_12 2014-2015 0.66015071
我想从长格式更改为宽格式:
将行顺序保留在新创建的宽数据框 (data.table) 列的 scenario
列中,例如1, 2, 3, 10, 11, 12
不是 1, 10, 11, 12, 2, 3
仅使用scenario
列中行值的一部分(匹配和替换模式)作为宽数据框(data.table)中的列名称,例如从 flux_0_P1.0_1
到 P_0_P1.0_1
(P
是原始数据框中值列的名称)
hyear P_0_P1.0_1 P_0_P1.0_2 P_0_P1.0_3 P_0_P1.0_10 P_0_P1.0_11 P_0_P1.0_12
1 2013-2014 0.140 0.696 0.897 0.738 0.143 0.815
2 2014-2015 0.0914 0.524 0.780 0.622 0.153 0.660
到目前为止我的尝试:spread
和 dcast
都更改了 key
列的顺序
### tidyverse
DT_wide_tidyr <- tidyr::spread(DT, scenario, P)
DT_wide_tidyr
> DT_wide_tidyr
# A tibble: 2 x 7
hyear flux_0_P1.0_1 flux_0_P1.0_10 flux_0_P1.0_11 flux_0_P1.0_12 flux_0_P1.0_2 flux_0_P1.0_3
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2013-2014 0.140 0.738 0.143 0.815 0.696 0.897
2 2014-2015 0.0914 0.622 0.153 0.660 0.524 0.780
### data.table
DT_wide_dcast <- data.table::dcast(DT, hyear ~ scenario, value.var = "P")
DT_wide_dcast
> DT_wide_dcast
hyear flux_0_P1.0_1 flux_0_P1.0_10 flux_0_P1.0_11 flux_0_P1.0_12 flux_0_P1.0_2 flux_0_P1.0_3
1: 2013-2014 0.14044214 0.7375284 0.1425994 0.8147289 0.6961034 0.8972446
2: 2014-2015 0.09141671 0.6221637 0.1530920 0.6601507 0.5235916 0.7800379
使用的数据
> dput(as.data.frame(DT))
structure(list(scenario = c("flux_0_P1.0_1", "flux_0_P1.0_1",
"flux_0_P1.0_2", "flux_0_P1.0_2", "flux_0_P1.0_3", "flux_0_P1.0_3",
"flux_0_P1.0_10", "flux_0_P1.0_10", "flux_0_P1.0_11", "flux_0_P1.0_11",
"flux_0_P1.0_12", "flux_0_P1.0_12"), hyear = c("2013-2014", "2014-2015",
"2013-2014", "2014-2015", "2013-2014", "2014-2015", "2013-2014",
"2014-2015", "2013-2014", "2014-2015", "2013-2014", "2014-2015"
), P = structure(c(0.140442142857143, 0.0914167142857143, 0.696103428571428,
0.523591571428571, 0.897244571428571, 0.780037857142857, 0.737528428571428,
0.622163714285714, 0.142599428571429, 0.153092, 0.814728857142857,
0.660150714285714))), .Names = c("scenario",
"hyear", "P"), class = "data.frame", row.names = c(NA, -12L))
如有任何建议,我们将不胜感激!谢谢您,新年快乐!
编辑
基于@G提供的解决方案。格洛腾迪克,这就是我最终使用的:
# Set row order in scenario column
DT[, scenario := factor(scenario, levels = unique(scenario))]
# tidyr
DT_wide_tidyr <- tidyr::spread(DT, scenario, P) %>%
dplyr::rename_at(vars(contains("flux")), funs(sub("flux", names(DT)[3], .)))
DT_wide_tidyr
# data.table
DT_wide_dcast <- data.table::dcast(DT, hyear ~ scenario, value.var = names(DT)[3])
names(DT_wide_dcast) <- gsub("flux", names(DT)[3], names(DT_wide_dcast))
DT_wide_dcast
最佳答案
如果将scenario
列更改为具有所需顺序的给定级别的因子,则您的两种解决方案都将有效。
如果 DF
是问题末尾显示的输入,则使用此处显示的 DF2
代码:
DF2 <- transform(DF, scenario = factor(scenario, levels = unique(scenario)))
如果 wide
是代码的结果,那么这会将列名称中的 flux
更改为 P
:
names(wide) <- sub("flux", "P", names(wide))
关于r - 长转宽格式: keep row orders and use only part of row values for newly created column names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48045855/
函数参数中或显示尺寸时(高度,宽度)的顺序是否有约定? 最佳答案 我不知道大量的语言,但我使用过的语言(宽度,高度)。它更适合沿着 (x, y) 坐标线。 关于language-agnostic -
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
有没有办法显示自定义宽度/高度的YouTube视频? 最佳答案 在YouTube网站上的this link中: You can resize the player by editing the obj
如何从此表单获取数据(数据的长表示): import pandas as pd df = pd.DataFrame({ 'c0': ['A','A','B'], 'c1': ['b',
我在让宽度为 900px 的页面在宽度低于 900px 的分辨率下看起来不错时遇到了一些麻烦。这包括智能手机等移动设备。看起来我在页面上放大了,但无法滚动或缩小。我的页面包装器被定义为以屏幕为中心。这
我有一个包含一个表的 div,它有另一个带有动态变化文本的 div。div 有样式 overflow: hidden; white-space: nowrap; text-overflow: elli
我一直在愚弄下面的html代码。我已将 div id ="mainWide"设置为 2500 像素的宽度,这比我的屏幕还宽,我希望在主浏览器窗口中有一个水平滚动条,而不是在 div block 本身中
当我的屏幕浏览器窗口在 992px-1199px 之间时,我的文章元素比它们的父 div (.wrapper) 更宽。所以在这个屏幕宽度下,面板重叠并且看起来不对。 在所有其他屏幕宽度下,我的代码都准
我在对齐某些行时遇到了一些问题。我正在显示一个占据视口(viewport) 100% 高度的部分。因此,当您在屏幕上查看此部分时,您只会看到此部分。 在这个部分中,我有一个标题和副标题。标题应显示在节
为什么表单输入字段比其父 div 宽?宽度应用于文本 div,但不应用于其中包含表单字段的 div。为什么会这样? See the livecode here. .parent { width:
我想让这个标题 100% 宽。我在 jsfiddle 上试过这个,但是左边和右边还有一些余量。 CSS: #header { background: url("../img/top-bg.png
我的页面宽度有问题。无论我尝试什么,它的左边或右边都有白边(默认情况下在右边,如果我使用 margin-right:0 则在左边)。如果我使用 margin:0 比它留在右边。尝试了我所知道的一切,但
我有一个带有背景图片的宽 div。 div 的宽度为 1100 像素,当浏览器窗口小于该宽度时,会出现滚动条。有什么办法可以避免滚动条吗?那不是任何黑客。现在我知道我可以把它放在 body image
我有一个您可以访问的应用程序 here .当您打开应用程序时,只需单击加号按钮,您就会看到一个带有搜索栏的模态窗口。 现在请执行这两个搜索: 搜索 1:AAA 搜索 2:AAE 您会看到,在 AAE
这个问题在这里已经有了答案: Does element width include padding? (5 个答案) 关闭 7 年前。 HTML CSS .wrap{widt
我正在尝试在工具栏中创建一个自定义显示,类似于 Xcode 工具栏中心的信息 Pane 。 我们如何创建一个宽度超过 32 点的 NSToolbarItem? 框架始终将其限制为 32 点,即使最小和
我想将df1转换成df2 旧示例数据框 df1 df1 长),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359
我正在使用 JavaScript 代码在 FireBase/FireStore 中上传图像。 核心功能已经可以运行,我可以上传,但我还需要在上传之前检查图像的大小。这就是我很乐意获得帮助的地方。 以下
如何在 Tkinter 中设置/更改 ttk.Separator 对象的长度/宽度? ttk.Separator(self, orient='horizontal').grid(c
我有一个简单的问题。为什么 a 不会自动调整其内容的大小?像这样: Test 返回 width:100%,尽管我希望“Test”这个词简单地居中。有什么想法吗? 最佳答案 您的问题与 HT
我是一名优秀的程序员,十分优秀!