楼主: jalonso
2808 4

[问答] 关于数据框和数组的问题求教 [推广有奖]

  • 4关注
  • 0粉丝

本科生

64%

还不是VIP/贵宾

-

威望
0
论坛币
135 个
通用积分
35.1755
学术水平
0 点
热心指数
13 点
信用等级
5 点
经验
6217 点
帖子
57
精华
0
在线时间
138 小时
注册时间
2015-10-19
最后登录
2022-10-11

楼主
jalonso 发表于 2015-11-24 16:55:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如果我有一组带行列名称的数据框,里面的都是数值类型的数据,这组数据是不同时间下的数据,那么我想做成一个三维的数据结构第三维是时间维应该怎么处理呢?
自己试了下如果先把数据框转为矩阵,放入三维数组中,会丢失行列名称,不知道怎么解决这个问题。
文件名也有规律:
QQ截图20151124165322.jpg
数据格式:
  1. fREQUENCY/hZ;r/oHM;i/oHM
  2. 10000.0;0.0048373;-0.0052733
  3. 8915.3;0.0048447;-0.0046925
  4. 7948.3;0.004839;-0.0041555
  5. 7086.2;0.0048418;-0.0036781
  6. 6317.6;0.0048396;-0.0032444
  7. 5632.3;0.0048489;-0.0028604
  8. 5021.4;0.0048655;-0.0025079
  9. 4476.8;0.0048708;-0.0022009
  10. 3991.2;0.0048832;-0.001905
  11. 3558.3;0.0048925;-0.001654
  12. 3172.3;0.0049119;-0.0014159
复制代码
另外一个问题是,存储这些数据是为了分类,把同一频率(fREQUENCY/hZ)下所有时间的数据放在一起,怎么做最方便呢?
二维码

扫码加我 拉你入群

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

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

关键词:问题求教 数据框 Frequency Ency freq

回帖推荐

jiangbeilu 发表于5楼  查看完整内容

这样之后,你就需要自己命名一下了,反正是按照顺序来的。 下图是我产生的8个文件,你先设置一下工作目录,然后用list.files()把文件名提取出来。 这是我理解的你的问题。

沙发
jalonso 发表于 2015-11-25 11:12:02
@jiangbeilu 大神求指教

藤椅
jiangbeilu 学生认证  发表于 2015-11-25 11:19:34
我一般不用数组,大部分data.frame都能解决问题,实在不行的话,就是list.
所以,需要你尽可能详细地说明一下你的问题:
比如,样本数据是什么样子的,你需要实现怎么样的结果。说实话,读完了,我对这个问题没有什么概念

板凳
jalonso 发表于 2015-11-25 12:50:16
jiangbeilu 发表于 2015-11-25 11:19
我一般不用数组,大部分data.frame都能解决问题,实在不行的话,就是list.
所以,需要你尽可能详细地说明一 ...
可能是我没太讲清楚,
我的样本数据集就是如图一的八个csv文件,他们是按照不同的时间排列的( 从T000到T991八个数据文件)。以T000的csv文件为例,打开就是后面给出来数据表中的格式,每个文件数据格式都是一样的,含义是测定在不同的(fREQUENCY/hZ)下的r/oHM 和 i/oHM,每个csv文件的fREQUENCY/hZ 值都是相同的,不同的是后两列的值。
我的目标就是,把样本数据集中的数据按照频率重新划分。
比如:fREQUENCY/hZ的值=10000.0时,把八个时间csv文件中下fREQUENCY/hZ=10000.0的r/oHM 和 i/oHM 值放在一个csv的文件中,同时给数据框加上一列时间。


然后我实现了只读取一个频率的值到文件中
  1. a=list.files("EIS20/")
  2. dir=paste("./EIS20/",a,sep = "")
  3. c<-data.frame()
  4. for (i in 1:8){
  5. charT<-substr((dir[i]),30,32)  #取出时间对应的位做成一个字符串
  6. t<-as.numeric(charT)
  7. temp<-read.csv(file = dir[i],header = TRUE,sep = ";")
  8. b<-temp[nrow(temp),] #每一个文件都取最后一个频率
  9. b$time<-t        #给b加一列时间t
  10. c<-rbind(c,b)
  11. }
  12. write.table(c,paste("F=",out_txt_f,".csv",sep = ""),sep=";")
复制代码
但是要是想输出所有频率就不太会了

报纸
jiangbeilu 学生认证  发表于 2015-11-25 13:52:25
  1. filename=list.files()
  2. filename
  3. x1=read.csv(filename[1])
  4. for (i in 2:length(filename)){
  5. x1=merge(x1,read.csv(filename[i]),by="time")
  6. }
  7. write.csv(x1,"zz.csv",row.names=F)
复制代码

这样之后,你就需要自己命名一下了,反正是按照顺序来的。
下图是我产生的8个文件,你先设置一下工作目录,然后用list.files()把文件名提取出来。
这是我理解的你的问题。

ques.rar
下载链接: https://bbs.pinggu.org/a-1924654.html

16.98 KB

本附件包括:

  • file1.csv
  • file2.csv
  • file3.csv
  • file4.csv
  • file5.csv
  • file6.csv
  • file7.csv
  • file8.csv

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-19 20:20