我想在 R 中创建一个包含来自另一列的值的新列,但我需要重新分配它们。这是一个示例:数据如下所示:
ID column1 column2
1 C*0421 C*0232
2 C*0531 C*0332
3 C*0502 C*0544
4 C*0432 C*0132
5 C*0632 C*0703
Run Code Online (Sandbox Code Playgroud)
所以我想要的是创建一个新列,它应该分配任何开头的内容:
C*04 should be C1
C*05 should be C2
C*07 should be C1
C*02 should be C2
NA should be NA
Run Code Online (Sandbox Code Playgroud)
最终结果应如下所示:
ID column1 column2 results_from_column1 results_from_column2 Combining_the_results
1 C*0421 C*0232 C1 C2 C1/C2
2 C*0531 C*0332 C2 C1 C2/C1
3 C*0502 C*0544 C2 C2 C2/C2
4 C*0432 C*0132 C1 C1 C1/C1
5 C*0632 C*0703 C2 C1 C2/C1
Run Code Online (Sandbox Code Playgroud)
我尝试使用此代码,但它给我错误地分配了某些值,我不知道为什么 …
我的数据框包含大约 900 列,我想将每 3 列的内容合并到一列中,我尝试做一个循环,但我不擅长,你能帮我吗?
数据框如下所示:
df_out <- data.frame(
"name" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"col1"=rep("B",times= 8),
"col2"=rep("A",times= 8),
"col3"=rep("G",times= 8),
"col4"=rep("C",times= 8),
"col5"=rep("C",times=8),
"col6"=rep("B",times= 8),
"col7"=rep("A",times= 8),
"col8"=rep("G",times= 8),
"col9"=rep("C",times= 8),
"col10"=rep("C",times=8),
"col11"=rep("B",times= 8),
"col12"=rep("A",times= 8),
"col13"=rep("G",times= 8),
"col14"=rep("C",times= 8),
"col15"=rep("C",times=8)
)
df_out
Run Code Online (Sandbox Code Playgroud)
所以最终的结果应该是这样的:
df_out2 <- data.frame(
"name" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"col1"=rep("BAG",times= 8),
"col2"=rep("CCB",times= 8),
"col3"=rep("AGC",times= 8),
"col4"=rep("CBA",times= 8),
"col5"=rep("GCC",times=8))
df_out2
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。另外,您能推荐一些学习 R 循环的书籍或好的网站吗?谢谢