我有一个来自导入文件的数据帧,如下所示:

stim1.1 <- c(23)
stim1.2 <- c(24)
stim1.3 <-c(266)
stim2.1 <- c(276)
stim2.2 <- c(564)
stim2.3 <-c(250)

mydata <- data.frame(stim1.1, stim1.2, stim1.3, stim2.1, stim2.2, stim2.3)

还有更多的行,但这是大体思路.输出如下:

stim1.1 stim1.2 stim1.3 stim2.1 stim2.2 stim2.3
23      24      266     276     564     250

我正在try 获得类似于以下内容的输出:

stim1    stim2
23       276
24       564
266      250

目前,我正在做以下工作来实现这一点:

mydata <- pivot_longer(mydata, c("stim1.1", "stim1.2", "stim1.3"), values_to = "stim1")


mydata <- pivot_longer(mydata, c("stim2.1", "stim2.2", "stim2.3"), values_to = "stim2")

这是可行的,但对于 Big Data 集来说,它的效率低得令人难以置信.我想有一种更优雅的方式来做这件事,但我不确定那是什么.有什么建议吗?

推荐答案

你可以在pivot_longer()条语句中做到这一点:

library(tidyr)
pivot_longer(mydata, cols= everything(), names_sep = "\\.", names_to = c(".value", "NumValue"))
# A tibble: 3 × 3
  NumValue stim1 stim2
  <chr>    <dbl> <dbl>
1 1           23   276
2 2           24   564
3 3          266   250

如果你喜欢,你现在可以删除"NumValue"列与dplyr::select()

R相关问答推荐

使用sensemakr和fixest feols模型(R)

更改Heatmap Annotation对象的名称

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

如何写一个R函数来旋转最后n分钟?

使用ggsankey调整Sankey图中单个 node 上的标签

在组中添加值增加和减少的行

如何改变x轴比例的列在面

如何在观测缺失的地方添加零

仅在Facet_WRAP()中的相应方面包含geom_abline()

从服务器在Shiny中一起渲染图标和文本

具有重复元素的维恩图

如何从向量构造一系列双边公式

`-`是否也用于数据帧,有时使用引用调用?

在散点图中使用geom_point放置线图例

将文本批注减少到gglot的y轴上的单个值

在鼠标悬停时使用Plotly更改geom_point大小

通过比较来自多个数据框的值和R中的条件来添加新列

R:水平旋转图

如何根据顺序/序列从数据框中排除值

对一个列表中另一个列表中的元素进行计数