楼主: cherishlife123
2305 12

[问答] 编程处理数据!来挑战下吧 [推广有奖]

  • 11关注
  • 2粉丝

已卖:34份资源

讲师

73%

还不是VIP/贵宾

-

威望
0
论坛币
1465 个
通用积分
0.4924
学术水平
4 点
热心指数
11 点
信用等级
3 点
经验
19678 点
帖子
307
精华
0
在线时间
748 小时
注册时间
2011-3-9
最后登录
2025-8-10

楼主
cherishlife123 学生认证  发表于 2014-11-11 19:43:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
2012-Export.xls (2.23 MB)
如题,现在处理的是比较大的数据,所以人工的不算哈。求教,谢谢大神!
我想要做的是使得行名和列名相同,在这个表里,列名的元素多于行名,也就是说删除多余的列,大神们来挑战下吧。
PS,不要把它看的很简单哦,涉及到数据清理,格式转换。转化成为矩阵后,列名要保持为国家的名字,不能多加。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:处理数据 格式转换 数据清理 国家的 国家 格式转换 清理 元素

沙发
树袋熊2 发表于 2014-11-11 19:47:21
list里面是什么格式呢?

藤椅
hubifeng? 学生认证  发表于 2014-11-11 19:55:42
unclass and matrix maybe help

板凳
cherishlife123 学生认证  发表于 2014-11-11 20:04:30
hubifeng? 发表于 2014-11-11 19:55
unclass and matrix maybe help
yep,but this list cannot work when procede further.can u help me settle the last problem down?

报纸
cherishlife123 学生认证  发表于 2014-11-11 20:05:25
树袋熊2 发表于 2014-11-11 19:47
list里面是什么格式呢?
文件传上去了,你看看,谢谢!

地板
hubifeng? 学生认证  发表于 2014-11-11 20:13:32
cherishlife123 发表于 2014-11-11 20:04
yep,but this list cannot work when procede further.can u help me settle the last problem down?
unlist it, then using matrix

7
cherishlife123 学生认证  发表于 2014-11-11 20:17:44
hubifeng? 发表于 2014-11-11 20:13
unlist it, then using matrix
I try

8
cherishlife123 学生认证  发表于 2014-11-11 20:23:37
hubifeng? 发表于 2014-11-11 20:13
unlist it, then using matrix
not work,其实我最终想要做的是使得行名和列名相同,在这个表里,列名的元素多于行名,能帮忙解决么?

9
meishanjia1900 发表于 2014-11-12 22:18:18
已经看过楼主给的数据。我的方法是这样:

(1)在EXCEL软件中,先动用VBA工具在该数据表的空白处添加一个按钮,并在调试状态下将鼠标移到该按钮控件处,点击右键,选”查看代码“,并在其中录入如下代码:

  1. Private Sub CommandButton1_Click()

  2.   Dim colRange(1 To 1000) As Integer, rowRange(1 To 1000) As Integer, s As String
  3.   
  4.   For i = 1 To 1000
  5.     colRange(i) = -1
  6.     rowRange(i) = -1
  7.   Next i
  8.   
  9.   colBegin = 2
  10.   rowBegin = 2
  11.   
  12.   For i = 1 To 1000
  13.   
  14.     a = Cells(6, 1 + i)
  15.    
  16.     If Trim(a) = "" Then Exit For
  17.    
  18.     For j = 8 To 1000
  19.    
  20.       b = Cells(j, 1)
  21.       
  22.       If Trim(b) = "" Then Exit For
  23.       If Trim(b) = Trim(a) Then
  24.         colRange(colBegin) = i + 1
  25.         colBegin = colBegin + 1
  26.         Exit For
  27.       End If
  28.       
  29.     Next j
  30.    
  31.   Next i
  32.   
  33.   colEnd = colBegin - 1
  34.   colRange(1) = 1
  35.   
  36.   For i = 1 To 1000
  37.   
  38.     a = Cells(7 + i, 1)
  39.    
  40.     If Trim(a) = "" Then Exit For
  41.    
  42.     For j = 2 To 1000
  43.    
  44.       b = Cells(6, j)
  45.       
  46.       If Trim(b) = "" Then Exit For
  47.       If Trim(b) = Trim(a) Then
  48.         rowRange(rowBegin) = i + 7
  49.         rowBegin = rowBegin + 1
  50.         Exit For
  51.       End If
  52.       
  53.     Next j
  54.    
  55.   Next i
  56.   
  57.   rowEnd = rowBegin - 1
  58.   rowRange(1) = 6
  59.   
  60.   
  61.   TargetFileName = "C:\2012Export2.txt"       '创建该txt文本文件,以存储处理好的数据。数据用逗号间隔。
  62.   Open TargetFileName For Output As #1
  63.   
  64.   
  65.   For row_Index = 1 To rowEnd

  66.      For col_Index = 1 To colEnd - 1
  67.           s = Trim(Cells(rowRange(row_Index), colRange(col_Index)))
  68.           If s = ".." Or s = "_" Then s = "NA"
  69.           Write #1, s;
  70.      Next col_Index
  71.      s = Trim(Cells(rowRange(row_Index), colRange(colEnd)))
  72.      If s = ".." Or s = "_" Then s = "NA"
  73.      Write #1, s
  74.   
  75.   Next row_Index
  76.    
  77.   Close #1

  78. End Sub
复制代码

录好后,保存程序,退出调试状态。之后点击该按钮,以执行该段代码。代码将创建一个txt文档,用于存储“过滤”后的数据。

(2)在R中读取数据:

  1. a = read.csv(file = "c:/2012Export2.txt", header = TRUE)
复制代码

a的具体内容你可以自己看一下(可以用View(a)命令查看)。这里给出a的尺寸信息:

> dim(a)
[1] 222 223

数据框的第一列用于存储EXCEL文件数据的行名称(注意,a本身没有行名称,EXCEL数据的行名称是作为第一列信息存入a当中的)。剔除该列,有效数据列有222个,恰与行数222相等。


10
xucaifeng66 发表于 2014-11-13 09:06:20
meishanjia1900 发表于 2014-11-12 22:18
已经看过楼主给的数据。我的方法是这样:

(1)在EXCEL软件中,先动用VBA工具在该数据表的空白处添加一个 ...
大牛级啊
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
cherishlife123 + 2 + 2 + 2 精彩帖子

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 22:38