我不确定在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 和 A1r
的含义:
A
: 在访问1中测量的 ID。
Ar
: 与 A
相同的 ID,但是在访问1中的重复测量。
A1
: 与 A
相同的 ID,在访问2中测量。
A1r
: 与 A
相同的 ID,但是为 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
我该如何修复我的代码使它可以正常工作?