我是一位致力于扩展知识的新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命令?
我试图通过了解更多有关因素的方法来获得答案,但没有任何类似于任何地方弹出的因素。 感谢。
答案 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)))