我有csv格式的下表:
我在csv格式表中有以下基因信息:
1 3 1 2 2 3
1415670_at 1 365.1 293.4 288.9 394.5 312 381.6
1415671_at 2 556.1 584.2 567.8 592.8 471.6 513.1
1415672_at 3 1048.3 763.1 1074.9 852.3 826.1 898.3
1415673_at 4 60.8 51.7 51.6 224 248.4 150.7
1415674_at 5 129.1 107.2 230.4 175.5 250.5 172.4
正如您所看到的,我得到了一些标有1,2和3的列。我制作了一个VB脚本,用于删除Excel中与1和2不同的列。我的问题是如何只使用R来做到这一点?所以我的结果表将是:
1 1 2 2
1415670_at 1 365.1 293.4 394.5 312
1415671_at 2 556.1 584.2 592.8 471.6
1415672_at 3 1048.3 763.1 852.3 826.1
1415673_at 4 60.8 51.7 224 248.4
1415674_at 5 129.1 107.2 175.5 250.5
顺便说一句,这只是一个例子,我可以将其他列标记为4,5和6,但我只想保留那些标记为1和2的列
我已尝试过发布的解决方案,即使用:
m<-read.csv("test1.csv")
smallerdat <- m[ grep("^X1$|^X2$|X1\\.|X2\\." , names(m) ) ]
其中m是csv格式的表,但我得到的结果是:
X1 X1.1 X2 X2.2
365.1 293.4 394.5 312
556.1 584.2 592.8 471.6
1048.3 763.1 852.3 826.1
60.8 51.7 224 248.4
129.1 107.2 175.5 250.5
所以它删除了我需要的前两列。如何不删除这些列?以及如何保持原始格式,我的意思是标题中只有1和2而不是那些Xs
答案 0 :(得分:2)
将数据读入名为“indat”
的数据框后 smallerdat <- indat[ grep("^X1|^X2", names(indat) )]
如果列不大于0-9,则可以正常工作。如果它们的字符值更大,那么你将在该网络中获得“11”或“21”,因此可能需要更复杂的东西:
smallerdat <- indat[ grep("^X1$|^X2$|X1\\.|X2\\." , names(indat) ) ]
答案 1 :(得分:2)
只需使用cbind()合并尽可能多的表列即可。
newtable <- cbind( table[1], table[2], table[3], ..)
其中table [1]是表的第一列,而table [2]是第二列,等等。
正如cbind()一样,您可以根据需要选择尽可能多的参数。
然后根据需要命名列;
colnames(newtable) <- list("First", "Second", "Third")
答案 2 :(得分:0)
马诺洛,
您必须将数据读入数据框并删除列。您唯一需要考虑的是列名称不能相同。
# Your data
data <- read.table(text = "1 3 1 2 2 3
365.1 293.4 288.9 394.5 312 381.6
556.1 584.2 567.8 592.8 471.6 513.1
1048.3 763.1 1074.9 852.3 826.1 898.3
60.8 51.7 51.6 224 248.4 150.7
129.1 107.2 230.4 175.5 250.5 172.4",
header=TRUE, sep="", nrows=5)
之后如果你运行
print(data)
你将获得
X1 X3 X1.1 X2 X2.1 X3.1
1 365.1 293.4 288.9 394.5 312.0 381.6
2 556.1 584.2 567.8 592.8 471.6 513.1
3 1048.3 763.1 1074.9 852.3 826.1 898.3
4 60.8 51.7 51.6 224.0 248.4 150.7
5 129.1 107.2 230.4 175.5 250.5 172.4
如果使用
删除名为X3和X3.1的列data <- data[, !(colnames(data) %in% c("X3","X3.1"))]
并执行
print(data)
你现在会得到
X1 X1.1 X2 X2.1
1 365.1 288.9 394.5 312.0
2 556.1 567.8 592.8 471.6
3 1048.3 1074.9 852.3 826.1
4 60.8 51.6 224.0 248.4
5 129.1 230.4 175.5 250.5
希望它有所帮助! :)