首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将列值设为R中的列名

将列值设为R中的列名
EN

Stack Overflow用户
提问于 2021-01-15 20:57:33
回答 3查看 133关注 0票数 0

所以我有这个数据:

代码语言:javascript
运行
复制
      mass        value
1 2390.421 0.0001376894
2 2390.713 0.0001362054
3 2391.004 0.0001346138
4 2391.296 0.0001329289
5 2391.588 0.0001311646
6 2391.879 0.0001293351

我需要的是质量值变成列名:

代码语言:javascript
运行
复制
   2390.421      2390.713       2391.004  ..... 
0.0001376894   0.0001362054   0.0001346138 .....

我试过重塑,打开,do.call,但我还是做不到。

我能做什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-15 21:03:13

那么dplyr解决方案呢:

代码语言:javascript
运行
复制
library(tidyverse)
df1 %>% pivot_wider(names_from = a, values_from = b)

# A tibble: 1 x 6
  `2390.421` `2390.713` `2391.004` `2391.296` `2391.588` `2391.879`
       <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>
1   0.000138   0.000136   0.000135   0.000133   0.000131   0.000129
票数 4
EN

Stack Overflow用户

发布于 2021-01-15 21:00:27

我们可以使用来自transposedata.table

代码语言:javascript
运行
复制
data.table::transpose(df1, make.names = 'mass')
#    2390.421     2390.713     2391.004     2391.296     2391.588     2391.879
#1 0.0001376894 0.0001362054 0.0001346138 0.0001329289 0.0001311646 0.0001293351

或使用deframe/as_tibble_row

代码语言:javascript
运行
复制
library(tibble)
library(dplyr)
deframe(df1) %>%
   as_tibble_row
# A tibble: 1 x 6
#  `2390.421` `2390.713` `2391.004` `2391.296` `2391.588` `2391.879`
#       <dbl>      <dbl>      <dbl>      <dbl>      <dbl>      <dbl>
#1   0.000138   0.000136   0.000135   0.000133   0.000131   0.000129

或者使用来自base Rbase R

代码语言:javascript
运行
复制
xtabs(value ~ mass, df1)
#mass
#    2390.421     2390.713     2391.004     2391.296     2391.588     2391.879 
#0.0001376894 0.0001362054 0.0001346138 0.0001329289 0.0001311646 0.0001293351 

它是一个matrix,但可以转换为data.frame

代码语言:javascript
运行
复制
as.data.frame.list(xtabs(value ~ mass, df1) , check.names = FALSE)
#   2390.421     2390.713     2391.004     2391.296     2391.588     2391.879
#1 0.0001376894 0.0001362054 0.0001346138 0.0001329289 0.0001311646 0.0001293351

数据

代码语言:javascript
运行
复制
df1 <- structure(list(mass = c(2390.421, 2390.713, 2391.004, 2391.296, 
2391.588, 2391.879), value = c(0.0001376894, 0.0001362054, 0.0001346138, 
0.0001329289, 0.0001311646, 0.0001293351)), class = "data.frame",
row.names = c("1", 
"2", "3", "4", "5", "6"))
票数 3
EN

Stack Overflow用户

发布于 2021-01-15 21:05:43

基本R选项

代码语言:javascript
运行
复制
> t(unstack(rev(df)))
        2390.421     2390.713     2391.004     2391.296     2391.588
res 0.0001376894 0.0001362054 0.0001346138 0.0001329289 0.0001311646
        2391.879
res 0.0001293351

data.table选项

代码语言:javascript
运行
复制
> dcast(setDT(df), . ~ mass, value = "value")[, -1]
       2390.421     2390.713     2391.004     2391.296     2391.588
1: 0.0001376894 0.0001362054 0.0001346138 0.0001329289 0.0001311646
       2391.879
1: 0.0001293351

数据

代码语言:javascript
运行
复制
> dput(df)
structure(list(mass = c(2390.421, 2390.713, 2391.004, 2391.296,
2391.588, 2391.879), value = c(0.0001376894, 0.0001362054, 0.0001346138,
0.0001329289, 0.0001311646, 0.0001293351)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6"))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65743444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档