r - 将值从行分配到具有相同名称的列
问题描述
我是 R 新手,但遇到以下问题:我有数据框df1
df1<-data.frame(name=c("C","C","C","B","B","A"),T=c(1,2,4,5,6,7),
A=c(0,2,3,2,3,0),B=c(1,0,2,0,0,5),C=c(0,0,0,2,0,1))
name T A B C
1 C 1 0 1 0
2 C 2 2 0 0
3 C 4 3 2 0
4 B 5 2 0 2
5 B 6 3 0 0
6 A 7 0 5 1
我想T
用相应的列名将值从列重新分配到列,如下所示:
name A B C
1 C 0 1 1
2 C 2 0 2
3 C 3 2 4
4 B 2 5 2
5 B 3 6 0
6 A 7 5 1
我努力了:
df2<-df1[outer(L$names,colnames(df1), "==")]<- df$name
df2<-df1[cbind(1:nrow(df1), match( df1$names, colnames(df1)))] <-df$name
解决方案
您的第二种方法非常接近工作:
df2 <- df1
df2[cbind(1:nrow(df1), match(df1$name, colnames(df1)))] <- df2$T
df2$T <- NULL
df2
# name A B C
# 1 C 0 1 1
# 2 C 2 0 2
# 3 C 3 2 4
# 4 B 2 5 2
# 5 B 3 6 0
# 6 A 7 5 1
这里给了我们需要替换df1[cbind(1:nrow(df1), match( df1$names, colnames(df1)))]
的条目。df2
df2$T
推荐阅读
- java - 如何在 Springboot 中创建假 FeignClient?
- wildcard - 作业完成后,snakemake 缺少输出异常
- powershell - 外壳 | 仅在每月的第一个星期四运行
- c - 将保存在数组中的十进制数转换为保存在数组中的二进制数,反之亦然
- ruby-on-rails - Rails group_by 自定义方法(Levenshtein 距离)
- c++ - 如何消除错误:pcl/memory.h:构建 c++ 文件时没有这样的文件或目录?
- python - YOLOv3 python如何在GUI中显示输出?
- c - 访问缓冲区始终返回 0,尽管实际值在 Atmel Studio 调试器中可见
- javascript - 在 React 应用程序上加载 GLTF 文件时出错
- oracle-apex - Oracle Apex:如何不显示“留在页面上”消息?