Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中将列值设置为列名_R_Dataframe - Fatal编程技术网

在R中将列值设置为列名

在R中将列值设置为列名,r,dataframe,R,Dataframe,我有一个数据框: 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 我需要的是质量值成为列名: 2390.421 2390.713 2391.004 ..... 0.0001376

我有一个数据框:

      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
我需要的是质量值成为列名:

   2390.421      2390.713       2391.004  ..... 
0.0001376894   0.0001362054   0.0001346138 .....
我试过重塑、取消堆叠、打电话,但还是做不到


我能做什么?

我们可以使用
转置
来自
数据表

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_tible_行

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
它是一个
矩阵
,但可以转换为
数据。帧

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
数据
df1关于
dplyr
解决方案:

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
库(tidyverse)
df1%>%pivot\u更宽(名称\u from=a,值\u from=b)
#一个tibble:1 x 6
`2390.421` `2390.713` `2391.004` `2391.296` `2391.588` `2391.879`
1   0.000138   0.000136   0.000135   0.000133   0.000131   0.000129
基本R选项

> 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
数据表
选项

> 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
数据

> 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"))
> 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
> 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"))