r - 如何使用来自另一个数据帧的数据创建数据帧?
问题描述
我不确定这在 R 中是否可行,但我有一个original_data
包含一行和一列的数据框,如下所示:
A Ar A1 A1r B Br B1 B1r C Cr C1 C1r...... 0 0.1 0.5 0.1 0.1 0.6 0.7 1.2 1.4 1.2 1.5 1.8.....
structure(list(A = 0L, Ar = 0.1, A1 = 0.5, A1r = 0.1, B = 0.1,
Br = 0.6, B1 = 0.7, B1r = 1.2, C = 1.4, Cr = 1.2, C1 = 1.5,
C1r = 1.8), row.names = c(NA, -1L), class = "data.frame")
解释什么A, Ar, A1, and A1r
意思:
A
:在访问 1 时进行测量的 ID。
Ar
: 与 Visit1 相同A
但复制的 ID
A1
:与 相同的 ID A
,但在访问 2 时进行测量。
A1r
: 与 ID 相同A
,但测量结果相同A1
。
我想将其转换为如下所示的数据框:
ID Visit Replicate Value
A 1 1 0
A 1 2 0.1
A 2 1 0.5
A 2 2 0.1
B 1 1 0.1
B 1 2 0.6
B 2 1 0.7
B 2 2 1.2
我试图在 R 中做到这一点:
new_data_frame = data.frame(ID=character(0),Visit=integer(0),Replicate=integer(0),Value=integer(0))
for(i in 1:ncol(original_data))
{ #this is for the column "ID"
new_data_frame$ID[i]=colnames(original_data)[i]
#this is for the column "Replicate"
if(grepl("r",colnames(original_data)[i])==True)
{
new_data_frame$Replicate[i]=2
}
else
{
new_data_frame$Replicate[i]=1
}
#this is for the column "Visit"
if(grepl("1",colnames(original_data)[i])==True)
{
new_data_frame$Visit[i]=2
}
else
{
new_data_frame$Visit[i]=1
}
#this is for the column "Value"
new_data_frame$Value[i]=original_data[,i]
}
我收到一个错误:
Error in `$<-.data.frame`(`*tmp*`, "ID", value = NA_integer_) :
replacement has 1 row, data has 0
如何修复我的代码以使其正常工作?
解决方案
ID 为第一个字符,Visit 为 1 +(名称中的数字,如果没有数字则为 0),Replicate 为 1 +(如果名称以 'r' 结尾则为 1,否则为 0),Value 为未列出的值数据帧。
df_vec <- unlist(df)
data.frame(
ID = substr(names(df_vec), 1, 1),
Visit = 1 + dplyr::coalesce(readr::parse_number(names(df_vec)), 0),
Replicate = 1 + grepl('r$', names(df_vec)),
Value = df_vec)
# ID Visit Replicate Value
# A A 1 1 0.0
# Ar A 1 2 0.1
# A1 A 2 1 0.5
# A1r A 2 2 0.1
# B B 1 1 0.1
# Br B 1 2 0.6
# B1 B 2 1 0.7
# B1r B 2 2 1.2
# C C 1 1 1.4
# Cr C 1 2 1.2
# C1 C 2 1 1.5
# C1r C 2 2 1.8
推荐阅读
- node.js - 为什么我的 GraphQL 订阅在本地服务器上运行,但在实时服务器上部署时却不行
- python - Python正则表达式,否定字符串之间的一组字符
- javascript - 如何在 jquery .html() 方法中设置数组或倍数 var?
- html - 我希望引导程序在一个扩展另一个将关闭时崩溃
- mongodb - MongoExpress 没有从 .env 文件中读取登录名/密码
- python - 链接响应是 401,但它在前一段时间工作,然后工作 python
- javascript - Firebase 模拟器对本地 FireStore 的请求不成功
- reactjs - 什么是防止浏览器缓存文件反应的最佳解决方案
- git - 如何为 git pull 合并消息提供评论
- terraform - 用于检索键值的 Terraform 过滤器