更改R数据帧中所有列的值

时间:2018-03-16 02:40:49

标签: r dataframe

在R中,我有一个包含大约700个属性和6000行的数据帧。 每个单元格保存0到5之间的数字,表示发生了多少次。但不是数字,我想有/不。

我知道我可以做的每个属性

df$col <- ifelse(df$col>=1, "Yes", "No")

但是,如果不进行循环,对所有列执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用sapply

set.seed(2017);
df <- as.data.frame(matrix(sample(0:4, 20, replace = T), ncol = 5));
df;
#  V1 V2 V3 V4 V5
#1  4  3  2  0  1
#2  2  3  1  2  3
#3  2  0  3  2  4
#4  1  2  0  1  4


df[] <- sapply(df, function(x) ifelse(x >= 1, "Yes", "No"));
df;
#   V1  V2  V3  V4  V5
#1 Yes Yes Yes  No Yes
#2 Yes Yes Yes Yes Yes
#3 Yes  No Yes Yes Yes
#4 Yes Yes  No Yes Yes    

答案 1 :(得分:1)

data.frame(ifelse(df >= 1, 'Yes', 'No'))

(如果需要,分配给df

默认情况下,stringsAsFactors的{​​{1}}参数为data.frame,因此这会为您提供因素。