将数据框中多列中的值转换为整数

时间:2014-06-20 05:30:16

标签: r dataframe

我有一个这样的数据框:

V1  V2   V3   V4   V5   V6   V7   V8   V9   V10   V11
8   10   0.2  0.4   0   0.0  1.2  0.2  4.2  3.4   2.5
4   5    1.0   0    2   4.5   0   1.1   0    1    2.0
.....................................

,即V2-V11的列有一些十进制值。我想做的是将多行(2000)中的所有行转换为整数。

我尝试使用

apply(df, 1, as.integer())

但是,它没有用。

2 个答案:

答案 0 :(得分:0)

来自as.integer的R文档:

  

非整数数值被截断为零(即as.integer(x)等于其中的trunc(x)),并且丢弃复数的虚部(带有警告)。

所以听起来我们可以在这里使用trunc

> trunc(df)
#   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
# 1  8 10  0  0  0  0  1  0  4   3   2
# 2  4  5  1  0  2  4  0  1  0   1   2

答案 1 :(得分:0)

您还可以创建一个类

setClass("NumerictoInteger")
setAs("character", "NumerictoInteger", function(from) as.integer(from))
dat <- read.table(text="V1  V2   V3   V4   V5   V6   V7   V8   V9   V10   V11
8   10   0.2  0.4   0   0.0  1.2  0.2  4.2  3.4   2.5
4   5    1.0   0    2   4.5   0   1.1   0    1      2.0",sep="",header=T,stringsAsFactors=FALSE,colClasses="NumerictoInteger")

dat
  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
1  8 10  0  0  0  0  1  0  4   3   2
2  4  5  1  0  2  4  0  1  0   1   2