Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:按条件分组+;修改组列值_R - Fatal编程技术网

R:按条件分组+;修改组列值

R:按条件分组+;修改组列值,r,R,我的数据集由大学的调查回复组成,其中列有“职业”和“Q1.a”,前者是大学附属机构(如“Med”或“Bus”或“UCol”),后者记录参与者对该特定问题的回复 考虑到各种职业选择,我想对它们进行分组,以便将所有以“U”开头的职业分组在一起,代表本科生,而以“G”开头的职业代表毕业生,其余的是其他专业学校。其动机是看看这些不同的群体对调查中的各种问题做出了不同的反应。我找不到合适的方法来实现这一点,所以我创建了三个不同的数据帧,并对它们进行了修改,希望以后能将它们合并。为此,我天真的做法是: ca

我的数据集由大学的调查回复组成,其中列有“职业”和“Q1.a”,前者是大学附属机构(如“Med”或“Bus”或“UCol”),后者记录参与者对该特定问题的回复

考虑到各种职业选择,我想对它们进行分组,以便将所有以“U”开头的职业分组在一起,代表本科生,而以“G”开头的职业代表毕业生,其余的是其他专业学校。其动机是看看这些不同的群体对调查中的各种问题做出了不同的反应。我找不到合适的方法来实现这一点,所以我创建了三个不同的数据帧,并对它们进行了修改,希望以后能将它们合并。为此,我天真的做法是:

careers <- as.character(df$Career)

Ucol <- df[startsWith(careers,'U'),]
Ucol$Career = "UCOL"

Grad <- df[startsWith(careers,'G'),]
Grad$Career = "GRAD"

Rest <- df[(!startsWith(careers, 'U') & !startsWith(careers, 'G')),]
Rest$Career = "PROF"
只有收益

Class :character
这是没有帮助的


因此,我的问题是:如何按条件分组,然后修改这些分组列值的名称?

假设
df
为原始数据帧:尝试以下代码:

df$Career <- as.character(df$Career)
df$Career[grepl("^U",df$Career)] <- "UCOL"   # `^U` means starting with U
df$Career[grepl("^G",df$Career)] <- "GRAD"   # grepl gives a logical vector
df$Career[grepl("^[^UG]",df$Career)] <- "PROF" #[^UG] means anything apart from U/G in the start

df$Career我意识到我本可以做Ucol$Career=as.factor(“Ucol”),但谢谢@joel.wilson简洁的回答。@chunjy92你用真实数据测试了吗?我其实是刚发布代码,没有检查,从你开始;我没有共享任何数据。。
Class :character
df$Career <- as.character(df$Career)
df$Career[grepl("^U",df$Career)] <- "UCOL"   # `^U` means starting with U
df$Career[grepl("^G",df$Career)] <- "GRAD"   # grepl gives a logical vector
df$Career[grepl("^[^UG]",df$Career)] <- "PROF" #[^UG] means anything apart from U/G in the start