Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将特定观察值和行转换为R中的列_R_Dataframe_Tidy - Fatal编程技术网

将特定观察值和行转换为R中的列

将特定观察值和行转换为R中的列,r,dataframe,tidy,R,Dataframe,Tidy,我有类似于下面示例的行和列数据,并且希望基本上将每隔一行转换为一列。但是,我还想提取每个具体的观察结果,并将其放入相应的列中。因此,我想: X1 x y xx xy yy ci.lo1 0 0 0 0 0 -19350.63073 ci.up1 0 0 0 0 0 104.23538 ci.lo2 0 0 0 0 0 -8740.25544 ci.up2 0 0 0 0 0 52.97149 并试图把它变成:

我有类似于下面示例的行和列数据,并且希望基本上将每隔一行转换为一列。但是,我还想提取每个具体的观察结果,并将其放入相应的列中。因此,我想:

       X1 x y xx xy           yy  
ci.lo1  0 0 0  0  0 -19350.63073
ci.up1  0 0 0  0  0    104.23538
ci.lo2  0 0 0  0  0  -8740.25544
ci.up2  0 0 0  0  0     52.97149 
并试图把它变成:

      X1.lo  X1.up x.lo x.up y.lo y.up xx.lo xx.up xy.lo xy.up        yy.lo     yy.up  
1   0            0    0    0    0    0     0     0     0     0 -19350.63073 104.23538
2   0            0    0    0    0    0     0     0     0     0  -8740.25544  52.97149

我想知道如果不是在
base R
中,是否可以在
tidy
中进行这种类型的转换

提前感谢。

data%>%
行名称到列()%>%
变异(rowname2=sub(“^ci\\.(.*)\\d$”,“\\1”,rowname),
rowname=sub(“[^0-9]+”,“”,rowname))%>%
轴更宽(名称从=行名称2,
值_from=-c(rowname2,rowname),
id_cols=行名称,
名称\u sep=“.”%>%
列到行名称()
X1.lo X1.up x.lo x.up y.lo y.up xx.lo xx.up xy.lo xy.up yy.lo yy.up
1     0     0    0    0    0    0     0     0     0     0 -19350.631 104.23538
2     0     0    0    0    0    0     0     0     0     0  -8740.255  52.97149

看起来pivot_wider()可以帮上忙,我总共有702行数据。运行这段代码似乎符合我的要求,但每9列之后就会创建另一列
X1.lo1
。有没有可能阻止它在9行之后创建一个新列,并继续整个数据帧?这段代码确实符合您的示例。我必须查看您的实际数据以对照它检查代码。您可以在示例中添加足够的行,直到它创建该列
X1.lo1
,并更新您的预期输出。您的回答帮助我实现了这一点,我添加了
mutate(rowname2=gsub('[:digit:]+','',rowname2))
删除
行名2
列中多余的不必要数字。