【问题标题】:Remove decimals from a column in a data frame从数据框中的列中删除小数
【发布时间】:2017-03-16 21:43:28
【问题描述】:

我有一个数据框,列中有数字,这些数字是小数。我想删除列中的小数和整数。

我的数据框expsrs看起来像这样

ENSG00000226823.1           15     14.4947     22.5606     13.5819     5.09327     16.8503
ENSG00000266470.1            0           0           0           0           0           0
ENSG00000229435.2            0           0           0           0           0           0
ENSG00000277456.1            0           0           0           0           0           0
ENSG00000236077.2            0           0           0           0           0           0
ENSG00000280518.1            0     57.9833     30.4089     23.0059     4.85613           0

我已经尝试过这段代码,但它删除了小数但也改变了值。

exprs$V1<-round(as.numeric(exprs$V1), 0)

我想从所有列中删除小数,但不是从行名中删除。有人可以帮忙吗?

【问题讨论】:

  • 您可以在读取数据集时使用 read.csvdec="," 以避免此问题
  • 看起来您编辑了数据集。您的预期输出是什么?
  • 期望的输出是整数,比如 14 而不是 14.4947。
  • 在那种情况下exprs[] &lt;- lapply(exprs, as.integer)(我假设你有你提到的行名)
  • floor(exprs) 可以做到,我相信。

标签: r dataframe type-conversion


【解决方案1】:

一种选择是通过遍历列(使用lapply)转换为integer

exprs[] <- lapply(exprs, as.integer)
exprs
#                  v1 v2 v3 v4 v5 v6
#ENSG00000226823.1 15 14 22 13  5 16
#ENSG00000266470.1  0  0  0  0  0  0
#ENSG00000229435.2  0  0  0  0  0  0
#ENSG00000277456.1  0  0  0  0  0  0
#ENSG00000236077.2  0  0  0  0  0  0
#ENSG00000280518.1  0 57 30 23  4  0

数据

exprs <- structure(list(v1 = c(15L, 0L, 0L, 0L, 0L, 0L), v2 = c(14.4947, 
0, 0, 0, 0, 57.9833), v3 = c(22.5606, 0, 0, 0, 0, 30.4089), 
v4 = c(13.5819, 
0, 0, 0, 0, 23.0059), v5 = c(5.09327, 0, 0, 0, 0, 4.85613), v6 = c(16.8503, 
0, 0, 0, 0, 0)), .Names = c("v1", "v2", "v3", "v4", "v5", "v6"
), class = "data.frame", row.names = c("ENSG00000226823.1", "ENSG00000266470.1", 
"ENSG00000229435.2", "ENSG00000277456.1", "ENSG00000236077.2", 
"ENSG00000280518.1"))

【讨论】:

  • floor 也可以使用。
【解决方案2】:

转换为整数时要非常小心,因为这会将值四舍五入。我在查找表中遇到了同样的问题,该表的所有值都为 xxx.5,我不想四舍五入 - 只需去掉小数。 @Benjamin 的答案是正确的方法,即使用 floor()。

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 1970-01-01
    • 2021-02-17
    • 2011-03-15
    • 2021-11-06
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多