r - 合并列向量,然后合并到特定格式的数据表中
问题描述
我想创建一个数据表,R
以一种很好的格式显示最终结果。我的最终结果如下:
NENA.day <- c(42)
NENA.weeks <- c(38, 40, 41)
EQ.day <- c(20)
EQ.weeks <- c(17, 12, 12)
K.day <- c(10)
K.weeks <- c(12, 15, 14)
数据表应如下所示:
我怎样才能以这种方式组合所有向量,得到下表和相应的列名和行名?图片中的数据表是在Excel中创建的,结果数据表应该是在Excel中创建的R
。
解决方案
我们可以得到 a 中的向量list
并将split
其分组
lst1 <- mget(ls(pattern = 'NENA|EQ|K'))
out <- sapply(split(lst1, sub("\\..*", "", names(lst1))), unlist)
row.names(out) <- toupper(sub(".*\\.(.)\\D+(\\d*)", "\\1\\2", row.names(out)))
-输出
out
# EQ K NENA
#D 20 10 42
#W1 17 12 38
#W2 12 15 40
#W3 12 14 41
list
由于我们有很多向量对象,mget
在named
list
我们从ls
. 曾经,它在 a 中list
,然后我们split
通过从ie 删除 '.day'、'.weeks'、循环中list
删除子字符串来对嵌套列表组。with和嵌套为“EQ”、“K”、“NENA”中的每一个创建一个单曲。names
list
sapply
unlist
list
vector
或另一种选择tidyverse
library(dplyr)
library(tidyr)
library(tibble)
library(stringr)
library(data.table)
enframe(lst1) %>%
unnest(c(value)) %>%
separate(name, into = c('name', 'dayweek'), sep="\\.") %>%
mutate(rn = rowid(name)) %>%
pivot_wider(names_from = name, values_from = value) %>%
select(-rn) %>%
mutate(dayweek = str_c(toupper(substr(dayweek, 1, 1)),
rowid(dayweek), sep="+")) %>%
column_to_rownames('dayweek')
-输出
# EQ K NENA
#D+1 20 10 42
#W+1 17 12 38
#W+2 12 15 40
#W+3 12 14 41
推荐阅读
- python - 如何检测谁删除了反应 discord.py
- r - 在 R 中使用 FeNmlm 包进行固定效应的重力估计
- python - ImportError: 无法从 'gensim.matutils' (d:\python\lib\site-packages\gensim\matutils.py) 导入名称 'softcossim'
- javascript - 如何向用户展示特定的网页设计?
- java - 无法从“15”确定 java 版本
- matlab - 在这种情况下,是否有任何类似于 Matlab 中的 GOTO 的语法或方式?
- loops - 3 个变体的集群补丁,每个变体 100 个计数
- amazon-web-services - AWS:存储和分析游戏数据架构(elastic or athena or kinesis)
- arrays - 计算要截断的目标大小以适合特定大小内的字符串
- angular - 运行 ng serve 时出现 ng-translate 错误