gpt4 book ai didi

r - 如何在R中完成行名称?

转载 作者:行者123 更新时间:2023-12-03 23:25:52 24 4
gpt4 key购买 nike

我导入了一个看起来像这样的表:

df <- data.frame(study=c("A", "", "", "B", "C", ""), 
outcome=c("mortality", "mortality", "surgery", "mortality", "mortality", "surgery"),
time.point=c("30d", "1y", "10d", "1y", "5y", "20d"))
第 2 和第 3 个结果属于研究 A,第 6 个结果属于研究 C。
在我的表格中,有各种类似的例子,每项研究的结果和时间点数量不规则。
如何为每一行指定一个好的名称,以表明研究和结果以及预测的时间点?
我希望它看起来像这样:
df_new <- data.frame(study=c("A", "", "", "B", "C", ""), 
outcome=c("mortality", "mortality", "surgery", "mortality", "mortality", "surgery"),
time.point=c("30d", "1y", "10d", "1y", "5y", "20d"),
rowname=c("A_mortality_30d", "A_mortality_1y", "A_surgery_10d", "B_mortality_1y", "C_mortality_5y", "C_surgery_20d"))

非常感谢!

最佳答案

这是一种将空字符串更改为 NA 的方法

library( data.table ); library( zoo )
#make it a data.table
setDT(df)
#set empty strings as NA
df[ study == "", study := NA_character_ ]
#create new column
df[, rowname := paste( zoo::na.locf( study), outcome, time.point, sep = "_")][]
# study outcome time.point rowname
# 1: A mortality 30d A_mortality_30d
# 2: <NA> mortality 1y A_mortality_1y
# 3: <NA> surgery 10d A_surgery_10d
# 4: B mortality 1y B_mortality_1y
# 5: C mortality 5y C_mortality_5y
# 6: <NA> surgery 20d C_surgery_20d

关于r - 如何在R中完成行名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66720790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com