小编bir*_*era的帖子

将多行与多列数据R合并为一行

我有一个数据集,其中以不同的方式测量了相同的效果,我想比较这些测量值。我的数据集如下所示:

Study     MType     ID     Insect     Mean     Sd     N
Alla      Fecundity  1      Aphid      .62      .7628  11
Alla      RGR        1      Aphid      -32.8    7.76   11
Ando      Survival   2      Bee        2.34     .67    8
Ando      RGR        2      Bee        4.56     .34    10
Ando      Fecundity  2      Bee        5.32     4.3    20
Run Code Online (Sandbox Code Playgroud)

我想按 ID 号组合行,以便保留每行的 MType、Mean、Sd 和 N(尽管需要更改列名,以便可以区分列)。

希望最终它看起来像:

Study ID Insect Fecundity.mean Fecundity.Sd Fecundity.N RGR.mean RGR.Sd...etc

一些困难:

  1. 大约有 10 种不同的 MType
  2. 每个 ID 号有 2 到 4 个 MType

我搞砸了 reshape 和 tidyr ,我无法弄清楚如何用它们中的任何一个来做到这一点。请帮忙!

r reshape2 tidyr

4
推荐指数
1
解决办法
2万
查看次数

在忽略字符串的同时将 CSV 文件中的数字截断为 3 个小数位

所以我有一个包含一堆数字和单词的 CSV 文件,我需要将数字截断到小数点后三位,但到目前为止我尝试过的所有内容都不起作用,因为字符串:我收到一条错误消息说'无法将字符串转换为浮点数'。

我使用了这里建议的代码:format to 3 decimal places all decimal numbers in csv file python

并得到了那个错误。

代码看起来像(假设所有缩进都是正确的):

with open('metaanalysis_data.csv', 'rb') as f_input, 
open('metaanalysis_datas.csv', 'wb') as f_output:
    csv_input = csv.reader(f_input, quotechar="'")
    csv_output = csv.writer(f_output)
    csv_output.writerow(next(csv_input))

    for cols in csv_input:
        for i in cols:
            for i in xrange(1, 10):
            #if i != str:
                cols[i] = '{:.3f}'.format(float(cols[i]))
        csv_output.writerow(cols)
Run Code Online (Sandbox Code Playgroud)

我尝试添加:

if i is float:
Run Code Online (Sandbox Code Playgroud)

在 'for i in xrange(1, 10)' 之前,我尝试了同样的事情,它清除了我的错误消息,但导致文件根本没有被修改。

请帮忙!谢谢!

python csv decimal

0
推荐指数
1
解决办法
2164
查看次数

标签 统计

csv ×1

decimal ×1

python ×1

r ×1

reshape2 ×1

tidyr ×1