我有一张名为' data'的表格。它有n列。每列具有相同的结构。 (即具有两个值的字符向量'是',' no')。我想重新编辑这些列,其中'是'标签将为1,而不是'标签将为0.我目前使用for循环进行如下操作。使用lapply或任何其他函数有更快的方法吗?
=DATE(YEAR(D1),3*INT((MONTH(D1)-1)/3)+1,1)
答案 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
)。