Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 使用ifelse和备选方案分配因子水平_R - Fatal编程技术网

R 使用ifelse和备选方案分配因子水平

R 使用ifelse和备选方案分配因子水平,r,R,我有多个数据帧,需要合并和融化。熔化后,我想根据行所属的原始数据帧向长数据帧添加一个标识符 library(reshape2) df1 <- data.frame(User=factor(LETTERS[24:26]), A=c(1,2,3), B=c(1,2,3)) df2 <- data.frame(User=factor(LETTERS[23:25]), C=c(1,2,3), D=c(1,2,3)) df.comb <- merge(df1, df2, by="Use

我有多个数据帧,需要合并和融化。熔化后,我想根据行所属的原始数据帧向长数据帧添加一个标识符

library(reshape2)
df1 <- data.frame(User=factor(LETTERS[24:26]), A=c(1,2,3), B=c(1,2,3))
df2 <- data.frame(User=factor(LETTERS[23:25]), C=c(1,2,3), D=c(1,2,3))

df.comb <- merge(df1, df2, by="User", all=T)
df.m <- melt(df.comb, id.vars="User")
不幸的是,我有更多的数据帧(总共九个);所以ifelse变得非常乏味和复杂(如果可能的话,我还没有尝试过)


df3您可以在
dplyr
中使用
case\u。如果其他选项都不起作用,
TRUE
是else部分

library(dplyr)
df.m$cat <- as.factor(case_when(df.m$variable %in% names(df1) ~ "df1", 
                                df.m$variable %in% names(df2) ~ "df2", 
                                df.m$variable %in% names(df3) ~ "df3",
                                TRUE ~ "No df"))
库(dplyr)

df.m$cat来自
dplyr
case\u语句可以帮助您解决这个问题
df3 <- data.frame(User=factor(LETTERS[22:24]), E=c(1,2,3), F=c(1,2,3))

df.comb <- merge(merge(df1, df2, by="User", all=T), df3, by="User", all=T)
df.m <- melt(df.comb, id.vars="User")
library(dplyr)
df.m$cat <- as.factor(case_when(df.m$variable %in% names(df1) ~ "df1", 
                                df.m$variable %in% names(df2) ~ "df2", 
                                df.m$variable %in% names(df3) ~ "df3",
                                TRUE ~ "No df"))