在没有for循环的情况下更改表的列中的数据结构

时间:2015-08-13 21:19:32

标签: r

我有一张名为' data'的表格。它有n列。每列具有相同的结构。 (即具有两个值的字符向量'是',' no')。我想重新编辑这些列,其中'是'标签将为1,而不是'标签将为0.我目前使用for循环进行如下操作。使用lapply或任何其他函数有更快的方法吗?

=DATE(YEAR(D1),3*INT((MONTH(D1)-1)/3)+1,1)

2 个答案:

答案 0 :(得分:0)

apply()和gsub()是你的朋友。

for (i in (1:n)){

 data[data[,i]=='no',i]=0
 data[data[,i]=='yes',i]=1

}

答案 1 :(得分:0)

假设https://www.dropbox.com/s/bz9np310g76c22w/ramm.zip?dl=0 是一个矩阵,那么直截了当

data

看起来很吸引人。如果ifelse(data=="yes", 1, 0) 中有任何其他内容不是“是”或“否”,那么

data

会导致matrix(c(yes=1, no=0)[data], nrow(data)) 值出现在这些地方。

这两种解决方案都利用NA同时将操作应用于数组的所有组件的倾向。第一个是本问题中概述的尝试精神。第二个利用数组的关联寻址:R创建一个数组来执行转换,c(yes=1, no=0)通过[data](提取)函数执行转换。

如果[是其他内容(例如数据框),则可以快速轻松地将其转换为矩阵(data),应用这些快速,简单的解决方案,然后将其转换回来(as.matrix)。