r - R:想要将数据表中的列中的数据复制到特定的行中
问题描述
我目前有多个数据表,如下所示:
第一四分位数
Q1DT = data.table(
Tree = c("Cherry", "Birch", "Oak"),
Height = c("1m", "3m", "5m"),
Age = c(10L, 12L, 15L)
)
Q1DT
# Tree Height Age
# 1: Cherry 1m 10
# 2: Birch 3m 12
# 3: Oak 5m 15
意思是
AVGDT = data.table(
Tree = c("Cherry", "Birch", "Oak"),
Height = c("2m", "5m", "7m"),
Age = c(13L, 17L, 19L)
)
AVGDT
# Tree Height Age
# 1: Cherry 1m 10
# 2: Birch 3m 12
# 3: Oak 5m 15
四分位数 3
Q3DT = data.table(
Tree = c("Cherry", "Birch", "Oak"),
Height = c("7m", "10m", "25m"),
Age = c(17L, 22L, 25L)
)
Q3DT
# Tree Height Age
# 1: Cherry 1m 10
# 2: Birch 3m 12
# 3: Oak 5m 15
我想将它们组合起来,使它们看起来像这样:
Tree Measure Q1 Q2 Q3
Cherry Height
Cherry Age
Birch Height
Birch Age
Oak Height
Oak Age
我使用以下内容制作了表格的基本内容:
output.complete <- data.table(Tree= rep(trees.quartile.1$Tree, each = 2), measure = c(rep(c("Height", "Age"), times = length(unique(trees.quartile.1$Tree)))))
但是,我现在无法从单独的四分位数数据表中的数据中计算出如何填充此表。任何帮助将不胜感激!
解决方案
有几种方法可以做到这一点。我将使用rbind
、melt
和dcast
重塑您的数据:
stack = rbind(Q1 = Q1DT, AVG = AVGDT, Q3 = Q3DT, idcol = 'stat')
# this will give a warning -- in the input, 'Age' is
# an integer, and 'Height' is a character, so melt
# must force 'Age' to be a character to proceed
out = stack[ , melt(.SD, id.vars = c('stat', 'Tree'), variable.name = 'Measure')
][ , dcast(.SD, Tree + Measure ~ stat, value.var = 'value')]
# Tree Measure AVG Q1 Q3
# 1: Birch Height 5m 3m 10m
# 2: Birch Age 17 12 22
# 3: Cherry Height 2m 1m 7m
# 4: Cherry Age 13 10 17
# 5: Oak Height 7m 5m 25m
# 6: Oak Age 19 15 25
我们可以在setcolorder
之后使用以获取所需顺序的列,或者以正确的顺序定义stat
为一个因素stack
:
stack[ , stat := factor(stat, levels = c('Q1', 'AVG', 'Q3'))]
推荐阅读
- java - 如何在 apache poi 中为 word 创建 commentsExtended.xml、commentsExtensible、commentdIds 文件
- javascript - 使用 map 去除复杂的 if 语句
- python - 找到一个短语/字符串并阅读与该短语/字符串对应的行
- apache-kafka - KStreams - “提交任务偏移量{}”的无数日志
- r - 当我输入代码时,R 只是在等待,它甚至不会给出错误。我该如何解决?
- c# - 正则表达式:字符串的开头和结尾带有指定长度的字母
- android - 如何在android studio中构建url时编码特殊字符?
- html - 为什么我不能为我的可滚动组件分配“scrollLeft”属性
- pyodbc - 用于在 pyodbc 中转换 DECIMAL('100.000') 的输出转换器
- ios - 在 React Native 库中使用本地 .xcframework 的 Podspec 文件应该是什么?