R语言 为在同一行中具有变量名称和值的绘图重新整形数据表

qxsslcnc  于 2023-01-28  发布在  其他
关注(0)|答案(3)|浏览(111)

我正在构建一个Shiny应用程序,但需要一些数据转换方面的帮助,以便生成绘图。SQL查询和过滤器为我提供了所需的结果,但数据的形状是一个障碍,因为所有内容都在单行上,而所需的要素名称在列中。目前数据表的形状如下所示
| a姓名|a值|b姓名|b值|
| - ------|- ------|- ------|- ------|
| 特征名称A|特征值A|特征名称B|特征值B|
我的目标是要有一个功能重要性图,但我不希望功能标签是通用名称(aName、bName),我希望它们是FeatureNameA并与FeatureValueA等绑定。
谢谢大家!
我尝试了melt()和t(),但是没有得到理想的结果,理想的结果是一个重新整形的表,如下所示:
| 姓名|价值|
| - ------|- ------|
| 特征名称A|特征值A|
| 特征名称B|特征值B|
希望我能得到帮助,写一个函数,以转换表,以获得所需的结果,为条形图。

uplii1fm

uplii1fm1#

library(data.table)
data.table::rbindlist(
  split.default(mydata, f = gsub("(.).*", "\\1", names(mydata))))

#           aName        aValue
# 1: FeatureNameA FeatureValueA
# 2: FeatureNameB FeatureValueB
kr98yfug

kr98yfug2#

library(data.table)

melt(setDT(df1),,patterns('Name','Value'))

   variable       value1        value2
1:        1 FeatureNameA FeatureValueA
2:        2 FeatureNameB FeatureValueB
68bkxrlz

68bkxrlz3#

我们可以使用pivot_longer

library(tidyr)
pivot_longer(df1, cols = everything(), 
    names_to = c(".value"), names_pattern = ".(.*)")
  • 输出
# A tibble: 2 × 2
  Name         Value        
  <chr>        <chr>        
1 FeatureNameA FeatureValueA
2 FeatureNameB FeatureValueB

或使用base R

data.frame(Name = unlist(df1[c(TRUE, FALSE)]), 
    Value = unlist(df1[c(FALSE, TRUE)]))

数据

df1 <- structure(list(aName = "FeatureNameA", aValue = "FeatureValueA", 
    bName = "FeatureNameB", bValue = "FeatureValueB"), 
class = "data.frame", row.names = c(NA, 
-1L))

相关问题