重塑数据帧,以便在一列中的观察结果是列名称,相应的列是其中的值

时间:2017-06-14 04:41:11

标签: r reshape2

 X.nm.   X.A.        variable
<dbl>  <dbl>           <chr>
  300 3.9472 100ng _1_36.712
  350 0.2060 100ng _1_36.712
  380 0.1118 100ng _1_36.712
  400 0.0607 100ng _1_36.712
  450 0.0210 100ng _1_36.712
  500 0.0129 100ng _1_36.712
  300 0.0099 100ng _2_36.712
  750 0.0099 100ng _2_36.712
  350 0.4060 100ng _2_36.712
  300 0.4060 100ng _1_45.712
  350 0.6118 100ng _1_45.712
  400 0.9607 100ng _1_45.712

我有上面的数据框,我想重塑它以便X.nm.是一列,变量中的观察值变为列名和X.A.是该栏目中的观察结果。我该怎么做呢?然后,我如何才能使该解决方案成为一个功能,因为我想对多个数据帧执行此操作并将它们导出为ex​​cel文件。

我尝试做dcast和传播,但问题是如果是X.nm.和X.A.成为变量列中其他3(Reaction.Type_Trial_Actual.Total.Seconds)作为自己的列的变量,我遇到重复标识符的问题。原始数据集具有以下列:X.nm。,X.A。 ,Reaction.Type,Trial,Actual.Total.Seconds。我已经尝试过这段代码了,但它不起作用:

mc5<- orig.df %>% unite(variable,c(Reaction.Type, Trial, Actual.Total.Seconds)) 
mc6<- dcast(mc5, X.nm.~X.A.+variable, value.var = mc5$X.A.)

所需样本:

 X.nm.   100ng _1_36.712    100ng _2_36.712    100ng _1_45.712
  300         3.9472        0.0099                0.4060
  350         0.2060        0.4060                0.6118

1 个答案:

答案 0 :(得分:0)

使用final AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_layout, null); dialog.setView(view); final AlertDialog alert = dialog.create(); Button cancel = (Button) view.findViewById(R.id.cancel_action); cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { alert.dismiss(); } }); Button ok = (Button) view.findViewById(R.id.ok_action); ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //whatever you want } }); alert.show(); 包的答案是:

tidyr

如果没有人给你正确的library(tidyr) spread(orig.df, key = variable, value = X.A.) 方式,请尝试使用。