【问题标题】:How to create a table with only integers如何创建一个只有整数的表
【发布时间】:2021-12-23 03:25:18
【问题描述】:

我有一张表格,其中包含样本的分类 [chr] 和存在/absebce 数据 [num]。我从 .tsv 文件中导入了它。它是一个包含 x 个观测值和 y 个变量的表。我必须将其转换为仅以整数作为条目的表格。

我试过lapply(data,as.integer),它适用于存在/不存在数据的列,但在分类列中,我的数据消失了,我有 NA 而不是物种。更重要的是,我不再有表格,而是有 y 个变量的列表。

还有其他方法可以做到吗?

taxonomy site1 site2 site3 site4
species1 0 1 0 0
species2 1 0 0 0
species3 0 1 1 1

lapply(data,as.integer) 之后是这样的:

taxonomy site1 site2 site3 site4
NA 0 1 0 0
NA 1 0 0 0
NA 0 1 1 1

【问题讨论】:

  • lapply(data[,2:5],as.integer)
  • 感谢您的评论,但我需要将第一列放在表格中。

标签: r dplyr tidyr


【解决方案1】:

使用dplyr,您可以...

library(dplyr)

# everything except the first column
mtcars %>%
  mutate(across(-1, as.integer))

# everything except "taxonomy"
mtcars %>%
  mutate(across(-taxonomy, as.integer))

# everything that starts with "site"
data %>%
  mutate(across(starts_with("site"), as.integer))

我会质疑您的数据中的内容,以使其首先被视为字符。我的猜测是有一些“NA”字符。如果您使用的是read.table(),您可能需要调整参数na.strings = "NA",使其首先以整数形式读入。

【讨论】:

  • 感谢您的意见。
【解决方案2】:

如果我们想使用基础 R,我们可以使用 lapply 并将输出分配给数据的子集:

data[-1]<-lapply(data[-1], as.integer)
data

【讨论】:

    【解决方案3】:

    我想我现在知道问题出在哪里 - 我需要在第一列中使用分类名称作为我的表中的标签。

    使用read.csv('data.csv', header = TRUE, row.names = 1) 读取数据确实有帮助。

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 2019-06-13
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2021-03-12
      • 1970-01-01
      • 2012-10-04
      相关资源
      最近更新 更多