- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抱歉,如果这是一个简单的问题,但我在搜索后未能找到简单的解决方案。我对 R 相当陌生,并且在使用 Melt (reshape2) 或 Gather(tidyr) 函数将宽格式转换为长格式时遇到问题。我正在使用的数据集包含 22 个不同的时间变量,每个变量都有 3 个时间段。当我尝试一次性将所有这些格式从宽格式转换为长格式时,就会出现问题。我已经成功地单独转换它们,但这是一个非常低效且漫长的过程,所以我想知道是否有人可以提出一个更简单的解决方案。下面是我创建的示例数据集,其格式与我正在使用的数据集类似:
Subject <- c(1, 2, 3)
BlueTime1 <- c(2, 5, 6)
BlueTime2 <- c(4, 6, 7)
BlueTime3 <- c(1, 2, 3)
RedTime1 <- c(2, 5, 6)
RedTime2 <- c(4, 6, 7)
RedTime3 <- c(1, 2, 3)
GreenTime1 <- c(2, 5, 6)
GreenTime2 <- c(4, 6, 7)
GreenTime3 <- c(1, 2, 3)
sample.df <- data.frame(Subject, BlueTime1, BlueTime2, BlueTime3,
RedTime1, RedTime2, RedTime3,
GreenTime1,GreenTime2, GreenTime3)
对我有用的解决方案是使用 tidyr 的收集功能,按主题排列数据(以便将每个主题的数据分组在一起),然后仅选择主题、时间段和评级。这是针对每个变量(在我的例子中是 22)完成的。
install.packages("dplyr")
install.packages("tidyr")
library(dplyr)
library(tidyr)
BlueGather <- gather(sample.df, Time_Blue, Rating_Blue, c(BlueTime1,
BlueTime2,
BlueTime3))
BlueSorted <- arrange(BlueGather, Subject)
BlueSubtracted <- select(BlueSorted, Subject, Time_Blue, Rating_Blue)
在这段代码之后,我将所有内容合并到一个数据框中。这对我来说似乎非常缓慢且效率低下,希望有人可以帮助我找到一个更简单的解决方案。谢谢你!
最佳答案
这里的想法是gather()
所有时间变量(除Subject
之外的所有变量),在上使用
将它们拆分为 separate()
>keylabel
和 time
,然后 spread()
label
和 value
以获得所需的输出。
library(dplyr)
library(tidyr)
sample.df %>%
gather(key, value, -Subject) %>%
separate(key, into = c("label", "time"), "(?<=[a-z])(?=[0-9])") %>%
spread(label, value)
这给出:
# Subject time BlueTime GreenTime RedTime
#1 1 1 2 2 2
#2 1 2 4 4 4
#3 1 3 1 1 1
#4 2 1 5 5 5
#5 2 2 6 6 6
#6 2 3 2 2 2
#7 3 1 6 6 6
#8 3 2 7 7 7
#9 3 3 3 3 3
注意
这里我们在 answer 的 separate()
中使用 regex
通过@RichardScriven 在第一个遇到的数字上拆分列。
编辑
从您的评论中我了解到,您的数据集列名称实际上采用 ColorTime_Pre
、ColorTime_Post
、ColorTime_Final
的形式。如果是这种情况,您不必在 separate()
中指定正则表达式作为默认值 sep = "[^[:alnum:]]+"
将匹配您的 _
并将 key 相应地拆分为 label
和 time
:
sample.df %>%
gather(key, value, -Subject) %>%
separate(key, into = c("label", "time")) %>%
spread(label, value)
将给出:
# Subject time BlueTime GreenTime RedTime
#1 1 Final 1 1 1
#2 1 Post 4 4 4
#3 1 Pre 2 2 2
#4 2 Final 2 2 2
#5 2 Post 6 6 6
#6 2 Pre 5 5 5
#7 3 Final 3 3 3
#8 3 Post 7 7 7
#9 3 Pre 6 6 6
关于R:将宽格式转换为具有多个 3 个时间段变量的长格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38505035/
函数参数中或显示尺寸时(高度,宽度)的顺序是否有约定? 最佳答案 我不知道大量的语言,但我使用过的语言(宽度,高度)。它更适合沿着 (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
我是一名优秀的程序员,十分优秀!