use*_*251 23 statistics r
在下面的一组值中,如何在第4列中找到特定值的行号?
例如,如何使用R代码命令找到列号为4的值"1578"的行号.
> mydata_2
sex age height_seca1 height_chad1 height_DL weight_alog1
1 F 19 1800 1797 180 70.0
2 F 19 1682 1670 167 69.0
3 F 21 1765 1765 178 80.0
4 F 21 1829 1833 181 74.0
5 F 21 1706 1705 170 103.0
6 F 18 1607 1606 160 76.0
7 F 19 1578 1576 156 50.0
8 F 19 1577 1575 156 61.0
9 F 21 1666 1665 166 52.0
10 F 17 1710 1716 172 65.0
11 F 28 1616 1619 161 65.5
12 F 22 1648 1644 165 57.5
13 F 19 1569 1570 155 55.0
14 F 19 1779 1777 177 55.0
15 M 18 1773 1772 179 70.0
16 M 18 1816 1809 181 81.0
17 M 19 1766 1765 178 77.0
18 M 19 1745 1741 174 76.0
19 M 18 1716 1714 170 71.0
20 M 21 1785 1783 179 64.0
21 M 19 1850 1854 185 71.0
22 M 31 1875 1880 188 95.0
23 M 26 1877 1877 186 105.5
24 M 19 1836 1837 185 100.0
25 M 18 1825 1823 182 85.0
26 M 19 1755 1754 174 79.0
27 M 26 1658 1658 165 69.0
28 M 20 1816 1818 183 84.0
29 M 18 1755 1755 175 67.0
Run Code Online (Sandbox Code Playgroud)
Sco*_*hie 33
如果你想知道一个值的行和列matrix或者data.frame,可以考虑使用arr.ind=TRUE参数which:
> which(mydata_2 == 1578, arr.ind=TRUE)
row col
7 7 3
Run Code Online (Sandbox Code Playgroud)
所以1578在第3列(你已经知道)和第7行.
Slo*_*ner 24
我很想使用它grepl,它应该为所有行提供匹配,并且可以对任意字符串进行推广.
mydata_2 <- read.table(textConnection("
sex age height_seca1 height_chad1 height_DL weight_alog1
1 F 19 1800 1797 180 70.0
2 F 19 1682 1670 167 69.0
3 F 21 1765 1765 178 80.0
4 F 21 1829 1833 181 74.0
5 F 21 1706 1705 170 103.0
6 F 18 1607 1606 160 76.0
7 F 19 1578 1576 156 50.0
8 F 19 1577 1575 156 61.0
9 F 21 1666 1665 166 52.0
10 F 17 1710 1716 172 65.0
11 F 28 1616 1619 161 65.5
12 F 22 1648 1644 165 57.5
13 F 19 1569 1570 155 55.0
14 F 19 1779 1777 177 55.0
15 M 18 1773 1772 179 70.0
16 M 18 1816 1809 181 81.0
17 M 19 1766 1765 178 77.0
18 M 19 1745 1741 174 76.0
19 M 18 1716 1714 170 71.0
20 M 21 1785 1783 179 64.0
21 M 19 1850 1854 185 71.0
22 M 31 1875 1880 188 95.0
23 M 26 1877 1877 186 105.5
24 M 19 1836 1837 185 100.0
25 M 18 1825 1823 182 85.0
26 M 19 1755 1754 174 79.0
27 M 26 1658 1658 165 69.0
28 M 20 1816 1818 183 84.0
29 M 18 1755 1755 175 67.0"),
sep = " ", header = TRUE)
which(grepl(1578, mydata_2$height_seca1))
Run Code Online (Sandbox Code Playgroud)
输出是:
> which(grepl(1578, mydata_2$height_seca1))
[1] 7
>
Run Code Online (Sandbox Code Playgroud)
[编辑]但是,正如评论中所指出的,这将捕获比字符串1578更多的内容(例如它也匹配21578等),因此只有在您确定要搜索的值的长度时才应使用它不会大于此处显示的四个字符或数字.
根据其他答案进行子集化也可以正常工作:
mydata_2[mydata_2$height_seca1 == 1578, ]
sex age height_seca1 height_chad1 height_DL weight_alog1
7 F 19 1578 1576 156 50
>
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找几个不同的值,可以将它们放在一个向量中,然后使用%in%运算符:
look.for <- c(1578, 1658, 1616)
> mydata_2[mydata_2$height_seca1 %in% look.for, ]
sex age height_seca1 height_chad1 height_DL weight_alog1
7 F 19 1578 1576 156 50.0
11 F 28 1616 1619 161 65.5
27 M 26 1658 1658 165 69.0
>
Run Code Online (Sandbox Code Playgroud)
小智 7
而不是1:nrow(mydata_2)你可以简单地使用该which()功能:which(mydata_2[,4] == 1578)
虽然如上所述,第3列包含1578,而不是第4列:
which(mydata_2[,3] == 1578)
| 归档时间: |
|
| 查看次数: |
116188 次 |
| 最近记录: |