R table()标签

时间:2017-03-21 20:00:29

标签: r

我有30列定性数据,我想在定量数据中进行转换。

首先,我想找出每列中存储的值,然后用数字替换该值的每个实例。我可以使用table()或summary()来获取每个数据值的频率表,但是我无法访问这些值 - 我只能得到我不关心的频率。我也看过unique()和duplicated()无济于事。

例如,对于第一列,我有10,000行包含“dummy1”,“dummy2”,“dummy3”,“dummy4”或“dummy5”。我想分别用1,2,3,4或5替换这些值。

table(data)给出了每个定性值的频率摘要,但是我无法在变量中隔离值“dummy1”等(我稍后将匹配替换)。因为我有30列数据,所以我不想硬编码这些虚拟值。 Unique()仅提供唯一值,但我想要一个每个可能值的列表。

任何帮助都会得到很多帮助。

2 个答案:

答案 0 :(得分:0)

尝试使用which()查找要转换的每个表达式的索引。以下示例应该足以让您入门。您可以使用循环或函数语句将此想法扩展到整个数据集:

a <- c("dummy1", "dummy1", "dummy2", "dummy1", "dummy3")
df <- data.frame(a=a, b=a, stringsAsFactors = FALSE)
print(df)
index <- which(df[1]=="dummy1")
df[index, 1] = 3
print(df)


> print(df)
       a      b
1 dummy1 dummy1
2 dummy1 dummy1
3 dummy2 dummy2
4 dummy1 dummy1
5 dummy3 dummy3
> index <- which(df[1]=="dummy1")
> df[index, 1] = 3
> print(df)
       a      b
1      3 dummy1
2      3 dummy1
3 dummy2 dummy2
4      3 dummy1
5 dummy3 dummy3

答案 1 :(得分:0)

我的问题是我不想硬编码“dummy1”。我不知道每列中的类别是什么,我有30列。我在另一个问题......水平(as.factor(dataCol))中偶然发现了我正在寻找的东西。这给了我“dataCol”列中的类别列表。

但是,您的代码是我下一步所需要的,所以非常感谢!