Here are a couple of ways to summarize the data. I invented a small data set to use in the example. The first summary shows how may species are at each site. The second summary shows a cross table of which species are at each site. If you data also has a column labeling the soil type of each landuse, you could summarize with respect to that as an alternative to summarizing by landuse.
library(dplyr)
#Invent some data
DF <- data.frame(Species = c("A","C","D","B","C","A","D","B","C","D"),
landuse = c(1,1,1,2,2,3,3,3,4,4))
#Display the data
DF
Species landuse
1 A 1
2 C 1
3 D 1
4 B 2
5 C 2
6 A 3
7 D 3
8 B 3
9 C 4
10 D 4
#Count the species per landuse category
SpeciesCount <- DF |> group_by(landuse) |> summarize(N = n())
SpeciesCount
# A tibble: 4 x 2
landuse N
<dbl> <int>
1 1 3
2 2 2
3 3 3
4 4 2
#Make a table of species and landuse
table(DF$Species, DF$landuse)
1 2 3 4
A 1 0 1 0
B 0 1 1 0
C 1 1 0 1
D 1 0 1 1