我有30列定性数据,我想在定量数据中进行转换。
首先,我想找出每列中存储的值,然后用数字替换该值的每个实例。我可以使用table()或summary()来获取每个数据值的频率表,但是我无法访问这些值 - 我只能得到我不关心的频率。我也看过unique()和duplicated()无济于事。
例如,对于第一列,我有10,000行包含“dummy1”,“dummy2”,“dummy3”,“dummy4”或“dummy5”。我想分别用1,2,3,4或5替换这些值。
table(data)给出了每个定性值的频率摘要,但是我无法在变量中隔离值“dummy1”等(我稍后将匹配替换)。因为我有30列数据,所以我不想硬编码这些虚拟值。 Unique()仅提供唯一值,但我想要一个每个可能值的列表。
任何帮助都会得到很多帮助。
答案 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”列中的类别列表。
但是,您的代码是我下一步所需要的,所以非常感谢!