使用字符串距离技术在R

时间:2015-05-01 18:17:33

标签: r

我是一位致力于扩展知识的新R爱好者。我正在阅读 Edwin de Jonge Mark van der Loo An Introduction To Data Cleaning With R文章。我正在进行练习2.4,如果有人能够确认我解决这个特定问题的技巧,我将不胜感激: 这是原始数据:

1 // Survey data. Created : 21 May 2013
2 // Field 1: Gender
3 // Field 2: Age (in years)
4 // Field 3: Weight (in kg)
5 M;28;81.3
6 male;45;
7 Female;17;57,2
8 fem.;64;62.8

这是我能够构建的更清洁的版本:

df:  
Gender Age..in.years. Weight..in.kg.
1      M             28           81.3
2   male             45           <NA>
3 Female             17           57,2
4   fem.             64           62.8

现在这是我使用adist

进行重新编码所得到的
D:
rawtext  coded
1       M   male
2    male   male
3  Female female
4    fem. female

现在我必须将Gender列转换为带有标签man和woman的因子变量。 我不知道如何继续,我正在考虑将数据的性别列更改为以下列向量:

    f <- factor(D$coded, levels = c("male", "female"), labels = c("man", "woman"))

返回:

    [1] man   man   woman woman
    Levels: man woman

我是对还是错呢?有没有办法使用transform直接更改df中的Gender变量?即做得更好:

df$Gender <- plyr::revalue(D$coded, c(male = "man", female = "woman"))

还是有另一种方法可以将性别变量的观察值更改为&#34; man&#34;或&#34;女人&#34;不使用多个ifesle命令?

我试图通过了解更多有关因素的方法来获得答案,但没有任何类似于任何地方弹出的因素。 感谢。

2 个答案:

答案 0 :(得分:1)

该行

f <- factor(D$coded, levels = c("male", "female"), labels = c("man", "woman"))

确实有效,但只是因为你很幸运 - 也就是说,因为D$coded的等级是c("male", "female")的顺序。如果他们处于不同的顺序,那么男性和女性的标签将被转换为您的新因素。 (毕竟,你从来没有在那一行中指定哪个级别应该转到&#34;男性&#34;以及哪个&#34;女性&#34;!)

重新评估某个因素的级别时,使用plyr包中的revalue函数更安全,更简单:

f <- plyr::revalue(D$coded, c(male = "man", female = "woman"))

答案 1 :(得分:-1)

使用基数R:

%dw 1.0
%output application/json
%var mergeddata = flowVars.list2 groupBy $.ID
---
payload map ((data,index) -> {
   ID: data.ID,
   firstName : data.firstName,
   familyName : data.familyName,
   Entities : data.Entities ++ (mergeddata[data.ID].Entities default [])
}) ++   
(flowVars.list2 filter (not (payload.ID contains $.ID)))