2017-03-21 39 views
0

我有30列定性数据,我想在定量数据中进行转换。R表()标签

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

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

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

任何帮助将非常appreicated。

+0

尝试使用哪个()来查找要转换的每个表达式的索引。例: – DBD

回答

0

尝试使用哪个()来查找要转换的每个表达式的索引。下面的例子应该足以让你开始。你可以用循环或功能说明将这个想法扩展到整个数据集:

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 
0

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

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