R语言中tidyverse包中gather函数(将数据转换为一列)
001、
library(tidyverse) ## 加载包 dat <- data.frame(a = c(400, 100, 300, 500), ## 测试数据框 b = c("xxx", "mmm", "nnn", "yyy"), c = c(333, 777, 888, 222)) dat gather(dat, key = 'items',value = 'values') ## 利用gather函数将dat数据框转换为一列
002、手动函数实现
dat <- data.frame(a = c(400, 100, 300, 500), ## 测试数据框 b = c("xxx", "mmm", "nnn", "yyy"), c = c(333, 777, 888, 222)) dat result <- data.frame() for (i in 1:ncol(dat)) { ## 利用循环实现 for (j in 1:nrow(dat)) { result <- rbind(result, c(colnames(dat)[i],dat[j,i])) } } names(result) <- c("items", "values") result
003、shell实现
(base) root@PC1:/home/test2# ls a.txt (base) root@PC1:/home/test2# cat a.txt a b c 400 xxx 333 100 mmm 777 300 nnn 888 500 yyy 222 (base) root@PC1:/home/test2# head -n 1 a.txt | xargs -n 1 | cat -n | while read {i,j}; do awk -v a=$i -v b=$j 'NR > 1{print b, $a}' a.txt; done a 400 a 100 a 300 a 500 b xxx b mmm b nnn b yyy c 333 c 777 c 888 c 222
004、python实现
(base) root@PC1:/home/test2# ls a.txt test.py (base) root@PC1:/home/test2# cat a.txt ## 测试数据 a b c 400 xxx 333 100 mmm 777 300 nnn 888 500 yyy 222 (base) root@PC1:/home/test2# cat test.py ## 测试脚本 #!/usr/bin/python in_file = open("a.txt", "r") in_file2 = open("a.txt", "r") list1 = in_file2.readlines()[0].strip().split() data = in_file.readlines()[1::] length = len(data[0].strip().split()) dict1 = {} for i in range(length): dict1[i] = [] for i in data: i = i.strip().split() for j in range(length): dict1[j].append(i[j]) for i,j in dict1.items(): for k in j: print(list1[i], k) in_file.close() in_file2.close() (base) root@PC1:/home/test2# python test.py ## 执行程序 a 400 a 100 a 300 a 500 b xxx b mmm b nnn b yyy c 333 c 777 c 888 c 222
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-08-25 c语言中只读取输入的一行字符的首个字符
2021-08-25 c语言中使用程序读取文件