在data.frame中拆分连续数据
我的数据结构是在data.frame中拆分连续数据,r,split,R,Split,我的数据结构是 id value1 value2 1 0.12 1 2 0.09 0 3 0.05 0 4 0.65 1 5 0.68 0 ... 我需要使用value1分割数据,这样0
id value1 value2
1 0.12 1
2 0.09 0
3 0.05 0
4 0.65 1
5 0.68 0
...
我需要使用
value1
分割数据,这样0cut
功能。首先创建一些示例数据:
dd = data.frame(id = 1:20, value1=runif(20))
接下来,定义断点并将value1
cuts = cut(dd$value1, breaks=seq(0, 1, 0.2))
然后将切割转换为数字(使用一些神奇的因子),以获得您想要的:
as.numeric(cuts)
所以
您只需使用
cut
功能即可。首先创建一些示例数据:
dd = data.frame(id = 1:20, value1=runif(20))
接下来,定义断点并将value1
cuts = cut(dd$value1, breaks=seq(0, 1, 0.2))
然后将切割转换为数字(使用一些神奇的因子),以获得您想要的:
as.numeric(cuts)
所以
您可以简单地执行以下操作
DF <- read.table(text='id value1 value2
1 0.12 1
2 0.09 0
3 0.05 0
4 0.65 1
5 0.68 0', header=TRUE)
DF$group <- (DF$value1)%/%0.201 + 1
DF
## id value1 value2 group
## 1 1 0.12 1 1
## 2 2 0.09 0 1
## 3 3 0.05 0 1
## 4 4 0.65 1 4
## 5 5 0.68 0 4
# to get % of '1' in each group
result <- aggregate(value2 ~ group, DF, function(x) sum(x)/length(x))
result
## group value2
## 1 1 0.3333333
## 2 4 0.5000000
DF您可以简单地执行以下操作
DF <- read.table(text='id value1 value2
1 0.12 1
2 0.09 0
3 0.05 0
4 0.65 1
5 0.68 0', header=TRUE)
DF$group <- (DF$value1)%/%0.201 + 1
DF
## id value1 value2 group
## 1 1 0.12 1 1
## 2 2 0.09 0 1
## 3 3 0.05 0 1
## 4 4 0.65 1 4
## 5 5 0.68 0 4
# to get % of '1' in each group
result <- aggregate(value2 ~ group, DF, function(x) sum(x)/length(x))
result
## group value2
## 1 1 0.3333333
## 2 4 0.5000000
DF你的问题中有很多拼写错误。你应该做拼写检查作为基本的网络礼仪。此外,陈述你迄今为止所做的一切总是好的。Stackoverflow不是为您编写代码的地方..好的。我得到了它。下次我会考虑你的建议。谢谢你的问题有很多拼写错误。你应该做拼写检查作为基本的网络礼仪。此外,陈述你迄今为止所做的一切总是好的。Stackoverflow不是为您编写代码的地方..好的。我得到了它。下次我会考虑你的建议。谢谢谢谢你的建议!这是一个非常简单的方法!谢谢你的建议!这是一个非常简单的方法!