我有以下列表:
group1<-c("A", "B", "D")
group2<-c("C", "E")
group3<-c("F")
Run Code Online (Sandbox Code Playgroud)
以及具有值和对应名称的数据框:
df <- data.frame (name=c("A","B","C","D","E","F"),value=c(1,2,3,4,5,6))
df
name value
1 A 1
2 B 2
3 C 3
4 D 4
5 E 5
6 F 6
Run Code Online (Sandbox Code Playgroud)
我想使用名称列基于列表对数据进行分组;
df
name value group
1 A 1 group1
2 B 2 group1
3 C 3 group2
4 D 4 group1
5 E 5 group2
6 F 6 group3
Run Code Online (Sandbox Code Playgroud)
并求和每组的值。
df
group sum
1 group1 7
2 group2 8
3 group3 6
Run Code Online (Sandbox Code Playgroud)
我已经搜索了类似的帖子,但因遇到问题而无法使用它们。
我正在寻找一种更优雅的方式(超过100列):
awk '{a[$1]+=$4}{b[$1]+=$5}{c[$1]+=$6}{d[$1]+=$7}{e[$1]+=$8}{f[$1]+=$9}{g[$1]+=$10}END{for(i in a) print i,a[i],b[i],c[i],d[i],e[i],f[i],g[i]}'
Run Code Online (Sandbox Code Playgroud)
这是输入:
a1 1 1 2 2
a2 2 5 3 7
a2 2 3 3 8
a3 1 4 6 1
a3 1 7 9 4
a3 1 2 4 2
Run Code Online (Sandbox Code Playgroud)
并输出:
a1 1 1 2 2
a2 4 8 6 15
a3 3 13 19 7
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
我有一个数据框,我想根据行名称折叠,列出一列中的所有值(见下文):
name value
nameA 10
nameA 3
nameA 5
nameB 5
nameC 1
nameC 44
Run Code Online (Sandbox Code Playgroud)
我想生成这个输出:
name value
nameA 10,3,5
nameB 5
nameC 1,44
Run Code Online (Sandbox Code Playgroud)
我可以使用aggregate()吗?类似的方法我总结R中的值?
sum <-aggregate(cbind(value)~name,data = x,FUN = sum)
谢谢!
我想根据第一列中的值扩展或拆分包含多个列的大型数据框:
这是我的意见:
a1;a2;a3 X 1
b1;b2 Y 2
c Z 3
d1;d2;d3 ZZ 4
Run Code Online (Sandbox Code Playgroud)
并输出:
a1 X 1
a2 X 1
a3 X 1
b1 Y 2
b2 Y 2
c Z 3
d1 ZZ 4
d2 ZZ 4
d3 ZZ 4
Run Code Online (Sandbox Code Playgroud)
到目前为止,我遇到了以下解决方案 - http://www.r-bloggers.com/expand-delimited-columns-in-r/ 但我希望有人可以建议一种更简单的方法.
我很感激任何帮助.
是否有更清晰,更有效的方法使用多个条件对R中的数据帧进行子集?这是我的简化示例.包含一式三份的列(v1,v2,v3和v4,v5,v6)每行一式三份可包含最多一个0值,否则应排除:
v1 v2 v3 v4 v5 v6
1 0 3 0 0 2
1 1 1 1 2 0
0 0 0 1 1 0
0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
这是我解决问题的简单方法.
data_short<-subset(data, (((v1 != 0 & v2 !=0) | (v1 != 0 & v3 !=0) | (v2 != 0 & v3 !=0)) & ((v4 != 0 & v5 !=0) | (v4 != 0 & v6 !=0) | (v5 != 0 & v6 !=0)))
v1 v2 v3 v4 v5 v6 …Run Code Online (Sandbox Code Playgroud)