网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月25日
漏签
0
天
r语言吧
关注:
24,416
贴子:
56,169
看贴
图片
吧主推荐
游戏
43
回复贴,共
1
页
<<返回r语言吧
>0< 加载中...
求助,如果按照规则从数据框中提取数据
只看楼主
收藏
回复
呢喃的_歌声
青江
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
当前有数据如下:
我想先按照行再按照列依次获取值,如果是NA就不取,如果取得值是重复的,最后需要知道每个值右边连续有几个NA值(如果右边不是NA就是0),重复的值有多少个。
呢喃的_歌声
青江
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
拿前六条具体来说:
求问r怎么写
速推网络科技
2024ios怎么下两个微信功能齐全:图文视频一键转发+一键点赞+一键评论软件高端定制,ios系统怎么下两个微信专业团队研发。正版授权的ios怎么下两个微信一次购买永久使用。
2024-12-25 15:40
广告
立即查看
呢喃的_歌声
青江
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
补充一下,上面漏的,如果取值是重复的,也不取。
锐角三角形
博士
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
数据的很多规则还是没说清楚:1.相同字段右边是否总是有相同个连续的NA?比如3-6行,人工赔付,这个字段右侧均非NA。2.相同的字段是否总是连续出现? 3.原数据中有多少唯一字段即为整理后的数据框a列长度?,b列为连续NA数,c为字段重复数?
这些不说清楚,没法给你写code。
呢喃的_歌声
青江
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我想按照命名规则,对hmtl表格的表头横向和纵向合并单元格。设想如下:
names(data) <- c("日期","预估亏损总金额","人工赔付_赔付记录数","人工赔付_预赔付金额","人工赔付_已赔付金额",
"人工赔付_预估实际赔付","特权码_发放码数","特权码_预估使用金额","追加支付_订单数","追加支付_预估_追加支付总金额",
"追加支付_预估_担保金额","追加支付_预估_亏损金额")
通过名字中加入“_”区分表头的行数,名字中含有最多“_"的就是表头的最大行数。向下合并的规则就是名字按照”_“分割后(下面代码的xx),右边一列是NA的NA个数加1.名称中"_"前面相同的名称,例如”人工赔付“重复出现的次数就是需要横向合并的数量。
if (length(grep('_',names(data)))>0 ) {
e2[1:col]<- ""
for (i in 1:length(names(data)) ){e2[i]<- sum(attr(gregexpr("_", names(data))[[i]],"match.length"))}
e2[e2==-1]<- 0
max_tableheadcol <- as.numeric(max(e2)) +1 #最大表头行数
zz<- strsplit(as.character(e[,1]),"_", fixed = TRUE)
xx<- matrix(rep(NA,col*max_tableheadcol),nrow=col,ncol=max_tableheadcol)
kk<- NULL
kk <- as.data.frame(kk)
for (i in 1:col) {
for (k in 1:max_tableheadcol) {
xx[i,k]<-zz[[i]][k]
kk[(k-1)*col+i,1]<-zz[[i]][k]
kk[(k-1)*col+i,2]<-k
if(k<= e2[i]) {kk[(k-1)*col+i,3]<-1 }else {
kk[(k-1)*col+i,3]<- max_tableheadcol-k+1 }
}
}
yy<- as.data.frame(unique(na.omit(kk)));names(yy)<- c("a","b","c")
xy<- as.data.frame(table(kk[,1]));names(xy)<- c("a","d")
xx<- as.data.frame(xx)
y <- merge(yy,xy,by="a",sort=F)
}
上面的代码已经实现了我需要的数据 ,你有没有更好的方法
锐角三角形
博士
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
如图
呢喃的_歌声
青江
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这个是就是我想自动生成的
锐角三角形
博士
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
f = function(data){
dat = t(data)
##a列
a = unique(dat[T])
##b列
bb = apply(dat, 2, function(x) c(b_count(x)))
uni = seq(3*ncol(dat))[!duplicated(dat, MARGIN = c(1, 2))]
b=bb[uni]
##c列
c = table(dat)[a]-1
dimnames(c)=c()
##整理结果,剔除NA项
data.frame(a,b,c)[!is.na(a),]
}
##定义b列计算函数b_count
b_count = function(set){
a1 = is.na(set[2])+is.na(set[2])*is.na(set[3])
a2 = is.na(set[3])
a3 = 0
c(a1,a2,a3)
}
##结果
f(data)
莆田市荔城区月飞翔网络..
分身王者微&信多开软件是一款简单、易用的微&信电脑PC版多开工具,可以同时维护多个微&信号,微&信消息提醒让管理更加便捷,可以有效提升客服人员沟通效率,
2024-12-25 15:40
广告
立即查看
呢喃的_歌声
青江
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
#求每行的“_”数
for (i in 1:length(names(data2)) ){e2[i]<- sum(attr(gregexpr("_", names(data2))[[i]],"match.length"))}
e2[e2==-1]<- 0
#按照“_”分裂
zz<- strsplit(as.character(names(data)),"_", fixed = TRUE)
呢喃的_歌声
青江
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
得到zz 如下:
> zz
[[1]]
[1] "日期"
[[2]]
[1] "实际赔付总金额"
[[3]]
[1] "人工赔付" "工单数"
[[4]]
[1] "人工赔付" "赔付金额"
[[5]]
[1] "人工赔付" "赔付占比"
[[6]]
[1] "特权码" "订单数"
[[7]]
[1] "特权码" "赔付金额"
[[8]]
[1] "特权码" "赔付占比"
[[9]]
[1] "追加支付" "订单数"
[[10]]
[1] "追加支付" "赔付金额"
[[11]]
[1] "追加支付" "赔付占比"
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示