You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在R语言数据框中合并列并格式化输出至Word的实现方法

问题描述

我有一个包含4列的数据框,列名分别为orpllul,具体数据如下:

(Intercept) 0.007 <0.001 0.004 0.011
agecat35-54 1.266 0.017 1.043 1.537
agecat55-69 1.761 <0.001 1.432 2.166
agecat70-84 3.097 <0.001 2.467 3.888
agecat85+ 4.229 <0.001 3.307 5.408
female_1 0.766 <0.001 0.684 0.857

希望将最后两列llul合并为% 95 CI列,格式为(ll值, ul值),最终输出可直接复制粘贴至Word,理想效果如下:

or p % 95 CI
(Intercept) 0.007 <0.001 (0.004, 0.011)
agecat35-54 1.266 0.017 (1.043, 1.537)
agecat55-69 1.761 <0.001 (1.432, 2.166)
agecat70-84 3.097 <0.001 (2.467, 3.888)
agecat85+ 4.229 <0.001 (3.307, 5.408)
female_1 0.766 <0.001 (0.684, 0.857)
解决方案

我给你准备了两种常用工具的实现方法,选你熟悉的用就行:

用Python(Pandas)实现

Pandas是处理表格数据的利器,几行代码就能搞定:

  1. 首先构造数据框,然后合并llul列,最后输出或直接复制到剪贴板:
import pandas as pd

# 把你的数据转换成DataFrame
data = {
    'or': [0.007, 1.266, 1.761, 3.097, 4.229, 0.766],
    'p': ['<0.001', '0.017', '<0.001', '<0.001', '<0.001', '<0.001'],
    'll': [0.004, 1.043, 1.432, 2.467, 3.307, 0.684],
    'ul': [0.011, 1.537, 2.166, 3.888, 5.408, 0.857]
}
# 设置行索引
row_names = ['(Intercept)', 'agecat35-54', 'agecat55-69', 'agecat70-84', 'agecat85+', 'female_1']
df = pd.DataFrame(data, index=row_names)

# 合并ll和ul成% 95 CI列,格式为(值, 值)
df['% 95 CI'] = df.apply(lambda row: f"({row['ll']}, {row['ul']})", axis=1)

# 只保留需要的列
result_df = df[['or', 'p', '% 95 CI']]

# 方法1:打印结果,直接复制输出的内容到Word
print(result_df.to_string())

# 方法2:直接复制到剪贴板,打开Word粘贴就是规整的表格
result_df.to_clipboard(sep='\t', index=True)

运行后,要么复制打印的文本,要么直接粘贴剪贴板里的内容,就能得到你想要的格式啦。

用R实现

如果你习惯用R处理统计数据,这个方法也很简单:

# 构造数据框
data <- data.frame(
    or = c(0.007, 1.266, 1.761, 3.097, 4.229, 0.766),
    p = c("<0.001", "0.017", "<0.001", "<0.001", "<0.001", "<0.001"),
    ll = c(0.004, 1.043, 1.432, 2.467, 3.307, 0.684),
    ul = c(0.011, 1.537, 2.166, 3.888, 5.408, 0.857),
    row.names = c("(Intercept)", "agecat35-54", "agecat55-69", "agecat70-84", "agecat85+", "female_1")
)

# 合并ll和ul列,生成% 95 CI
data$`% 95 CI` <- paste0("(", data$ll, ", ", data$ul, ")")

# 筛选需要的列
result_df <- data[, c("or", "p", "% 95 CI")]

# 方法1:打印结果,复制输出内容到Word
print(result_df)

# 方法2:直接复制到剪贴板,粘贴到Word就是表格
write.table(result_df, "clipboard", sep="\t", row.names=TRUE, col.names=TRUE)

执行后,用第二种方法直接粘贴到Word,格式会非常规整,不用再手动调整。

内容的提问来源于stack exchange,提问作者mandy

火山引擎 最新活动